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.
npx skills add Mindrally/skills --skill woocommerce -a claude-codeWhat 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_initto 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-code2Manually: put the files in place
~/.claude/skills/woocommerce/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/woocommerce/
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill woocommerce -a codex2Manually: put the files in place
.agents/skills/woocommerce/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill woocommerce -a cursor2Manually: put the files in place
.cursor/skills/woocommerce/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills woocommerce2Manually: put the files in place
.github/skills/woocommerce/SKILL.md1Skills CLI (Vercel)
npx skills add Mindrally/skills --skill woocommerce -a gemini-cli2Platform CLI
gemini skills install https://github.com/Mindrally/skills --path woocommerceManually: put the files in place
.devin/skills/woocommerce/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Mindrally/skills --skill woocommerce -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
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.