Automatically check code against PHPCS, ESLint, WordPress Coding Standards, or Drupal Coding Standards when user asks about code style, standards compliance, or best practices. Invoke when user mentions "coding standards", "code style", "linting", "PHPCS", "ESLint", or asks if code follows conventions.
Automatically checks code against PHPCS, ESLint, WordPress, or Drupal coding standards when you ask about style, compliance, or best practices. Triggers on keywords like "coding standards," "linting," or specific tool names.
/plugin marketplace add kanopi/cms-cultivator/plugin install cms-cultivator@claude-toolboxThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Automatically check code against coding standards and style guides.
Activate this skill when the user:
Check for indicators:
Drupal:
# Check for Drupal
test -f web/core/lib/Drupal.php && echo "Drupal project"
test -f docroot/core/lib/Drupal.php && echo "Drupal project"
WordPress:
# Check for WordPress
test -f wp-config.php && echo "WordPress project"
test -f web/wp-config.php && echo "WordPress project"
JavaScript/Frontend:
# Check for Node project
test -f package.json && echo "Node project"
For projects with Kanopi DDEV add-ons:
Drupal/WordPress:
# Run all code quality checks
ddev composer code-check
# Individual checks
ddev composer phpstan # Static analysis
ddev composer phpcs # Coding standards
ddev composer rector-check # Modernization check
Themes with Node:
# ESLint for JavaScript
ddev theme-npm run lint
# or
ddev exec npm run lint
Check if PHPCS is available:
test -f vendor/bin/phpcs && echo "PHPCS found"
Run PHPCS:
# Drupal
vendor/bin/phpcs --standard=Drupal,DrupalPractice web/modules/custom
# WordPress
vendor/bin/phpcs --standard=WordPress wp-content/themes/custom-theme
vendor/bin/phpcs --standard=WordPress wp-content/plugins/custom-plugin
Common Issues to Report:
Check if ESLint is available:
test -f node_modules/.bin/eslint && echo "ESLint found"
Run ESLint:
npx eslint src/**/*.js
npx eslint themes/custom/js/**/*.js
Common Issues to Report:
If user shows code without running tools:
PHP Analysis Checklist:
JavaScript Analysis Checklist:
var (use const or let)Format:
## Code Standards Check Results
**Project Type**: Drupal 10
**Standard**: Drupal Coding Standards + DrupalPractice
### Summary
- ✅ 45 files checked
- ⚠️ 12 warnings
- ❌ 3 errors
### Errors (Must Fix)
1. **Missing type hint** - `src/Controller/MyController.php:23`
```php
public function process($data) { // Missing type hint
Fix: Add type hint public function process(array $data): void {
src/Service/UserService.php:45
db_query("SELECT * FROM users WHERE id = " . $id);
Fix: Use placeholders db_query("SELECT * FROM users WHERE id = :id", [':id' => $id]);src/Form/MyForm.php:67
Run this to auto-fix formatting issues:
ddev composer code-fix
# or manually
vendor/bin/phpcbf --standard=Drupal web/modules/custom
## Integration with CMS Cultivator
This skill complements the `/quality-standards` slash command:
- **This Skill**: Automatically triggered during conversation
- "Is this code up to standards?"
- "Does this follow Drupal conventions?"
- Quick checks on code snippets
- **`/quality-standards` Command**: Explicit full project scan
- Comprehensive standards check
- CI/CD integration
- Full project analysis
## Platform-Specific Standards
### Drupal Coding Standards
**Key Conventions**:
- 2-space indentation
- Opening brace on same line
- Type hints required (PHP 7.4+)
- Drupal-specific naming (snake_case for functions, PascalCase for classes)
- Services over procedural code
- Dependency injection preferred
**Example Good Code**:
```php
<?php
namespace Drupal\mymodule\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* Provides route responses for the My Module module.
*/
class MyModuleController extends ControllerBase {
/**
* Returns a render array for the page.
*
* @return array
* A render array.
*/
public function content(): array {
return [
'#markup' => $this->t('Hello World'),
];
}
}
Key Conventions:
if ( true === $condition ))Example Good Code:
<?php
/**
* Display user dashboard widget.
*
* @param int $user_id User ID.
* @return void
*/
function my_theme_display_dashboard( $user_id ) {
if ( ! is_user_logged_in() ) {
return;
}
$user_data = get_userdata( $user_id );
if ( ! $user_data ) {
return;
}
echo '<div class="dashboard">';
echo '<h2>' . esc_html( $user_data->display_name ) . '</h2>';
echo '</div>';
}
Modern JavaScript Best Practices:
// Good: const/let, arrow functions, template literals
const getUserName = (user) => {
return `${user.firstName} ${user.lastName}`;
};
// Bad: var, function keyword, concatenation
var getUserName = function(user) {
return user.firstName + ' ' + user.lastName;
};
SQL Injection
XSS Vulnerabilities
Missing Access Checks
Example 1: Quick snippet check
User: "Is this WordPress code following standards?"
[Shows code with tabs and proper escaping]
Skill: "Let me check that against WordPress Coding Standards...
✅ Proper tab indentation
✅ Output properly escaped with esc_html()
✅ Correct brace placement
⚠️ Missing docblock - should document the function
Overall: Good! Just add a docblock."
Example 2: Project-wide check
User: "Does my custom module follow Drupal standards?"
Skill: "I'll run PHPCS on your custom module...
[Runs ddev composer phpcs or vendor/bin/phpcs]
Found 3 errors and 12 warnings across 8 files.
Most common issues:
- Missing type hints (5 occurrences)
- Lines too long (7 occurrences)
Would you like me to show the specific issues or run the auto-fixer?"
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.