Skip to main content
skill CX Codex

woocommerce · mindrally — Claude Code skill: what it does, how to install

Development guidelines for WordPress and WooCommerce. Helps assistants write safe PHP code with hooks, custom product types, and REST endpoints.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Mindrally/skills --skill woocommerce -a claude-code
Open on GitHub

What woocommerce does

Guides coding assistants through WordPress and WooCommerce architecture conventions. It establishes PHP standards such as meaningful naming, proper namespaces, PHPDoc comments, and function prefixing to avoid collisions.

Covers key WooCommerce mechanics: action and filter hooks (woocommerce_checkout_fields, woocommerce_order_status_completed), input sanitization (sanitize_email, absint), output escaping, and nonce verification. It also outlines patterns for extending the REST API and subclassing WC_Product.

Safe database interaction relies on $wpdb->prepare and WooCommerce data stores. Without PHPCS rulesets and WP_UnitTestCase installed in your test suite, adherence to these standards cannot be verified automatically.

What it helps with

  • add custom checkout fields using woocommerce_checkout_fields
  • create custom product classes extending WC_Product
  • register endpoints under rest_api_init to query products
  • implement nonce validation and capability checks in form handlers

Example prompts for the agent

  • Add a custom billing field to checkout with proper sanitization and nonce checks
  • Create a custom product type subclassing WC_Product and register it
  • Register a REST route to fetch published products using wc_get_products

How to install woocommerce

1Skills CLI (Vercel)

npx skills add Mindrally/skills --skill woocommerce -a claude-code

2Manually: put the files in place

~/.claude/skills/woocommerce/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/woocommerce/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about woocommerce

How to install woocommerce in Claude Code?

Run npx skills add Mindrally/skills --skill woocommerce -a claude-code. The file will be placed at ~/.claude/skills/woocommerce/SKILL.md.

What does the woocommerce skill do?

It instructs coding assistants to apply WordPress coding standards, secure data handling, and WooCommerce hook patterns when generating plugin code.

How does this skill approach database access?

It enforces $wpdb->prepare for parameterized SQL queries and favors native WooCommerce data store methods like $product->save().

Source text

SKILL.md · Apache-2.0
---
name: woocommerce
description: WordPress and WooCommerce development guidelines with PHP best practices, security standards, and extensibility patterns
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# WooCommerce Development

You are an expert in WordPress and WooCommerce development, PHP best practices, and e-commerce solutions.

## Core Principles

- Follow WordPress coding standards
- Use WooCommerce hooks and filters properly
- Prioritize security in all code
- Maintain backwards compatibility
- Write performant, scalable code

## PHP Best Practices

### Coding Standards

- Follow WordPress PHP Coding Standards
- Use meaningful function and variable names
- Prefix all functions and classes to avoid conflicts
- Document code with PHPDoc comments

### Namespacing

```php
namespace MyPlugin\WooCommerce;

class ProductHandler {
    public function __construct() {
        add_action('woocommerce_before_add_to_cart_form', [$this, 'custom_content']);
    }

    public function custom_content() {
        // Custom functionality
    }
}
```

## WooCommerce Hooks

### Action Hooks

```php
// Add content after product summary
add_action('woocommerce_after_single_product_summary', 'custom_product_content', 15);
function custom_product_content() {
    echo '<div class="custom-content">Additional information</div>';
}

// Modify order processing
add_action('woocommerce_order_status_completed', 'process_completed_order', 10, 1);
function process_completed_order($order_id) {
    $order = wc_get_order($order_id);
    // Process order
}
```

### Filter Hooks

```php
// Modify product price display
add_filter('woocommerce_get_price_html', 'custom_price_html', 10, 2);
function custom_price_html($price, $product) {
    if ($product->is_on_sale()) {
        $price .= '<span class="sale-badge">Sale!</span>';
    }
    return $price;
}

// Add custom checkout fields
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields');
function custom_checkout_fields($fields) {
    $fields['billing']['billing_custom_field'] = [
        'type' => 'text',
        'label' => __('Custom Field', 'textdomain'),
        'required' => false,
        'priority' => 25,
    ];
    return $fields;
}
```

## Security

### Data Validation

```php
// Sanitize input
$product_id = absint($_POST['product_id']);
$quantity = wc_stock_amount($_POST['quantity']);
$email = sanitize_email($_POST['email']);

// Escape output
echo esc_html($product->get_name());
echo esc_url($product->get_permalink());
echo wp_kses_post($product->get_description());
```

### Nonce Verification

```php
// Create nonce
wp_nonce_field('custom_action', 'custom_nonce');

// Verify nonce
if (!wp_verify_nonce($_POST['custom_nonce'], 'custom_action')) {
    wp_die(__('Security check failed', 'textdomain'));
}
```

### Capability Checks

```php
if (!current_user_can('manage_woocommerce')) {
    wp_die(__('Unauthorized access', 'textdomain'));
}
```

## Custom Product Types

```php
class WC_Product_Custom extends WC_Product {
    public function get_type() {
        return 'custom';
    }

    // Custom methods
}

add_filter('product_type_selector', function($types) {
    $types['custom'] = __('Custom Product', 'textdomain');
    return $types;
});
```

## REST API Extensions

```php
add_action('rest_api_init', function() {
    register_rest_route('custom/v1', '/products/featured', [
        'methods' => 'GET',
        'callback' => 'get_featured_products',
        'permission_callback' => '__return_true',
    ]);
});

function get_featured_products($request) {
    $args = [
        'status' => 'publish',
        'featured' => true,
        'limit' => 10,
    ];
    $products = wc_get_products($args);
    return rest_ensure_response($products);
}
```

## Database Operations

```php
global $wpdb;

// Use prepare for queries with variables
$results = $wpdb->get_results($wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}wc_orders WHERE status = %s",
    'completed'
));

// Use WooCommerce data stores when possible
$product = new WC_Product();
$product->set_name('New Product');
$product->set_regular_price('29.99');
$product->save();
```

## Performance

- Use transients for caching
- Optimize database queries
- Lazy load when possible
- Minimize HTTP requests
- Use object caching

### Caching

```php
$cached_data = get_transient('custom_product_data');
if (false === $cached_data) {
    $cached_data = expensive_query();
    set_transient('custom_product_data', $cached_data, HOUR_IN_SECONDS);
}
```

## Plugin Structure

```
plugin-name/
├── plugin-name.php
├── includes/
│   ├── class-main.php
│   ├── class-admin.php
│   └── class-frontend.php
├── admin/
│   ├── css/
│   └── js/
├── public/
│   ├── css/
│   └── js/
├── templates/
└── languages/
```

## Testing

- Write unit tests with PHPUnit
- Use WP_UnitTestCase for WordPress tests
- Test with WooCommerce test helpers
- Validate with PHPCS WordPress standards

© Mindrally · Apache-2.0 · Mindrally/skills

Similar skills

All skills for Backend and APIs →

woocommerce by other authors comes first.

From the same set214

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor