Back to skills
SkillHub ClubRun DevOpsFull StackSecurity

code-pattern-checker

Use before committing code - validates Drupal coding standards, SOLID/DRY principles, security practices, and CSS standards

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
17
Hot score
87
Updated
March 20, 2026
Overall rating
C2.5
Composite score
2.5
Best-practice grade
B84.0

Install command

npx @skill-hub/cli install camoa-claude-skills-code-pattern-checker

Repository

camoa/claude-skills

Skill path: drupal-dev-framework/skills/code-pattern-checker

Use before committing code - validates Drupal coding standards, SOLID/DRY principles, security practices, and CSS standards

Open repository

Best for

Primary workflow: Run DevOps.

Technical facets: Full Stack, Security.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: camoa.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install code-pattern-checker into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/camoa/claude-skills before adding code-pattern-checker to shared team environments
  • Use code-pattern-checker for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: code-pattern-checker
description: Use before committing code - validates Drupal coding standards, SOLID/DRY principles, security practices, and CSS standards
version: 2.0.0
---

# Code Pattern Checker

Validate code against Drupal standards and best practices.

## Required References

**Load these before checking code:**

| Reference | Checks |
|-----------|--------|
| `references/solid-drupal.md` | SOLID principles |
| `references/dry-patterns.md` | DRY patterns |
| `references/security-checklist.md` | Security practices |
| `references/frontend-standards.md` | CSS/JS standards |
| `references/quality-gates.md` | Gate 1 requirements |

## Activation

Activate when you detect:
- Before committing code
- After implementation, before task completion
- `/drupal-dev-framework:validate` command
- "Check my code" or "Review this"
- Invoked by `task-completer` skill

## Gate Enforcement

This skill enforces **Gate 1: Code Standards** from `references/quality-gates.md`.
Code CANNOT be committed until Gate 1 passes.

## Workflow

### 1. Identify Files to Check

Ask if not clear:
```
Which files should I check?
1. All changed files (git diff)
2. Specific file(s)
3. All files in a component

Your choice:
```

Use `Bash` with `git diff --name-only` to get changed files if option 1.

### 2. Read and Analyze Files

Use `Read` on each file. For each, check:

**PHP Files:**
- [ ] PSR-12 / Drupal coding standards
- [ ] Docblocks on classes and public methods
- [ ] Type hints on parameters and returns
- [ ] No deprecated functions
- [ ] Naming: PascalCase classes, camelCase methods

**SOLID Principles (references/solid-drupal.md):**
- [ ] Single Responsibility - one purpose per class
- [ ] Dependency Inversion - inject dependencies via services.yml
- [ ] No `\Drupal::service()` in new code (BLOCKING)
- [ ] Interfaces defined for services

**DRY Check (references/dry-patterns.md):**
- [ ] No duplicate code blocks (BLOCKING)
- [ ] Shared logic in services/traits
- [ ] Leverages Drupal base classes

**Security (references/security-checklist.md):**
- [ ] No raw SQL with user input (BLOCKING)
- [ ] Output escaped (Twig auto, Html::escape)
- [ ] Form tokens present (Form API handles)
- [ ] Access checks on routes (BLOCKING)
- [ ] Input validated via Form API

**CSS/SCSS (references/frontend-standards.md):**
- [ ] Mobile-first media queries
- [ ] No `!important` (BLOCKING)
- [ ] No `@extend` (BLOCKING)
- [ ] BEM naming convention
- [ ] Drupal behaviors pattern for JS

### 3. Run Automated Tools

Suggest running (user executes):
```bash
# PHP CodeSniffer
ddev exec vendor/bin/phpcs --standard=Drupal,DrupalPractice {path}

# PHPStan (if configured)
ddev exec vendor/bin/phpstan analyze {path}

# SCSS Lint (if applicable)
npm run lint:scss
```

### 4. Report Findings

Format output as:
```
## Code Check: {file or component}

### Status: PASS / ISSUES FOUND

### Standards Check
| Check | Status | Notes |
|-------|--------|-------|
| PSR-12 | PASS | - |
| Docblocks | ISSUE | Missing on processData() |
| Type hints | PASS | - |

### SOLID Principles
| Principle | Status |
|-----------|--------|
| Single Responsibility | PASS |
| Dependency Inversion | PASS |

### Security
| Check | Status | Notes |
|-------|--------|-------|
| SQL Injection | PASS | Uses query builder |
| XSS | PASS | Output escaped |
| Access Control | ISSUE | Missing on /admin/custom route |

### DRY Check
| Issue | Location |
|-------|----------|
| Duplicate logic | lines 45-52 and 78-85 |

### Issues to Fix (Priority Order)
1. **Security**: Add access check to admin route
2. **Standards**: Add docblock to processData()
3. **DRY**: Extract duplicate logic to private method

### Recommendation
- [ ] Fix security issue before merge
- [ ] Other issues: fix now or create follow-up task

Approved for commit: NO (fix security first) / YES
```

### 5. Offer Fixes

For each issue, offer to help:
```
Issue: Missing docblock on processData()

Suggested fix:
/**
 * Process the input data and return results.
 *
 * @param array $data
 *   The input data array.
 *
 * @return array
 *   The processed results.
 */

Apply this fix? (yes/no/skip)
```

## Stop Points

STOP and wait for user:
- After asking which files to check
- After presenting findings
- Before applying each fix
- If security issues found (emphasize fixing)
code-pattern-checker | SkillHub