Cursor rule
.cursor/rules/php-drupal-development-standards.mdcStandards for PHP and Drupal development
Cursor rules
Quality
34/100
Scores the file, not the repository.Length
427 words
1 headings · 0 code blocksRepository
86
— · pushed 280 days agoLast changed
3 days ago
First indexed 3 days ago.12345# Enhanced PHP and Drupal Development Standards67Ensures adherence to PHP 8.3+ features and Drupal development best practices for improved code quality, security, and maintainability.89<rule>10name: enhanced_php_drupal_development_standards11description: Enforce PHP 8.3+ and Drupal development standards12filters:13 - type: file_extension14 pattern: "\\.(php|module|inc|install|theme)$"15 - type: file_path16 pattern: "web/modules/custom/|web/themes/custom/"1718actions:19 - type: enforce20 conditions:21 - pattern: "^(?!declare\\(strict_types=1\\);)"22 message: "Add 'declare(strict_types=1);' at the beginning of PHP files for type safety."2324 - pattern: "class\\s+\\w+\\s*(?!\\{[^}]*readonly\\s+\\$)"25 message: "Consider using readonly properties where immutability is required for better code safety."2627 - pattern: "public\\s+function\\s+\\w+\\([^)]*\\)\\s*(?!:)"28 message: "Add return type declarations for all methods to enhance type safety."2930 - pattern: "extends\\s+\\w+\\s*\\{[^}]*public\\s+function\\s+\\w+\\([^)]*\\)\\s*(?!#\\[Override\\])"31 message: "Add #[Override] attribute for overridden methods for clear intent."3233 - pattern: "\\$\\w+\\s*(?!:)"34 message: "Use typed properties with proper nullability to improve code readability and prevent errors."3536 - pattern: "function\\s+hook_\\w+\\([^)]*\\)\\s*(?!:)"37 message: "Add type hints and return types for all hooks to leverage PHP's type system."3839 - pattern: "new\\s+\\w+\\([^)]*\\)\\s*(?!;\\s*//\\s*@inject)"40 message: "Use proper dependency injection with services for better testability and modularity."4142 - pattern: "extends\\s+FormBase\\s*\\{[^}]*validate"43 message: "Implement proper form validation in FormBase classes for security."4445 - pattern: "(?<!\\bTRUE\\b)\\btrue\\b|(?<!\\bFALSE\\b)\\bfalse\\b|(?<!\\bNULL\\b)\\bnull\\b"46 message: "Use uppercase for TRUE, FALSE, and NULL constants for consistency."4748 - pattern: "(?i)\\/\\/\\s[a-z]"49 message: "Ensure inline comments begin with a capital letter and end with a period for readability."5051 - pattern: "\\$this->config\\('\\w+'\\)"52 message: "Use ConfigFactory for configuration management to ensure proper dependency injection."5354 - type: suggest55 message: |56 **PHP/Drupal Development Best Practices:**57 - **File Structure:** Place module files in `web/modules/custom/[module_name]/` for organization.58 - **Module Files:** Ensure modules include .info.yml, .module, .libraries.yml, .services.yml where applicable.59 - **Dependencies:** Use hook_requirements() to manage external dependencies.60 - **Forms:** Use FormBase or ConfigFormBase for creating forms, always include CSRF protection.61 - **Caching:** Apply proper cache tags and contexts for performance optimization.62 - **Error Handling & Logging:** Implement robust error handling and logging using Drupal's mechanisms.63 - **Type Safety:** Leverage type safety in form methods and throughout your code.64 - **Dependency Injection:** Follow Drupal's dependency injection patterns for better maintainability.65 - **Service Container:** Use Drupal's service container to manage dependencies.66 - **Security:** Validate all user inputs, use Drupal's security practices like sanitization and escaping.67 - **Schema Updates:** Implement hook_update_N() for database schema changes.68 - **Translation:** Use Drupal's t() function for all user-facing strings.6970 - type: validate71 conditions:72 - pattern: "web/modules/custom/[^/]+/\\.info\\.yml$"73 message: "Ensure each custom module has a required .info.yml file."7475 - pattern: "web/modules/custom/[^/]+/\\.module$"76 message: "Ensure module has .module file if hooks are implemented."7778 - pattern: "web/modules/custom/[^/]+/src/Form/\\w+Form\\.php$"79 message: "Place form classes in the Form directory for consistency."8081 - pattern: "try\\s*\\{[^}]*\\}\\s*catch\\s*\\([^)]*\\)\\s*\\{\\s*\\}"82 message: "Implement proper exception handling in catch blocks for robustness."8384metadata:85 priority: critical86 version: 1.187</rule>
Also in ivangrynenko/cursorrules
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| ivangrynenko/cursorrules.cursor/rules/accessibility-standards.mdc · 86 | Cursor rules | ui | 44/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/api-standards.mdc · 86 | Cursor rules | api | 44/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/behat-steps.mdc · 86 | Cursor rules | lint-formatstyleperformanceagent-behaviour | 42/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/build-optimization.mdc · 86 | Cursor rules | build | 48/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/confluence-editing-standards.mdc · 86 | Cursor rules | stylearchsecuritydeployment | 60/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/debugging-standards.mdc · 86 | Cursor rules | no sections | 30/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/docker-compose-standards.mdc · 86 | Cursor rules | style | 62/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-broken-access-control.mdc · 86 | Cursor rules | stylesecurity | 52/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-cryptographic-failures.mdc · 86 | Cursor rules | security | 48/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-database-standards.mdc · 86 | Cursor rules | database | 30/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-injection.mdc · 86 | Cursor rules | securitydo-not | 55/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-insecure-design.mdc · 86 | Cursor rules | security | 48/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-integrity-failures.mdc · 86 | Cursor rules | style | 60/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-logging-failures.mdc · 86 | Cursor rules | security | 48/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-security-misconfiguration.mdc · 86 | Cursor rules | security | 48/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/drupal-vulnerable-components.mdc · 86 | Cursor rules | stylesecurity | 67/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/git-commit-standards.mdc · 86 | Cursor rules | git | 44/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/github-actions-standards.mdc · 86 | Cursor rules | no sections | 44/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/improve-cursorrules-efficiency.mdc · 86 | Cursor rules | no sections | 34/100 | 3 days ago | |
| ivangrynenko/cursorrules.cursor/rules/javascript-cryptographic-failures.mdc · 86 | Cursor rules | security | 40/100 | 3 days ago |
Diff against .cursor/rules/accessibility-standards.mdc Diff against .cursor/rules/api-standards.mdc Diff against .cursor/rules/behat-steps.mdc Diff against .cursor/rules/build-optimization.mdc Diff against .cursor/rules/confluence-editing-standards.mdc Diff against .cursor/rules/debugging-standards.mdc Diff against .cursor/rules/docker-compose-standards.mdc Diff against .cursor/rules/drupal-broken-access-control.mdc Diff against .cursor/rules/drupal-cryptographic-failures.mdc Diff against .cursor/rules/drupal-database-standards.mdc Diff against .cursor/rules/drupal-injection.mdc Diff against .cursor/rules/drupal-insecure-design.mdc Diff against .cursor/rules/drupal-integrity-failures.mdc Diff against .cursor/rules/drupal-logging-failures.mdc Diff against .cursor/rules/drupal-security-misconfiguration.mdc Diff against .cursor/rules/drupal-vulnerable-components.mdc Diff against .cursor/rules/git-commit-standards.mdc Diff against .cursor/rules/github-actions-standards.mdc Diff against .cursor/rules/improve-cursorrules-efficiency.mdc Diff against .cursor/rules/javascript-cryptographic-failures.mdc
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 3 days ago | |
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 3 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 3 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 3 days ago | |
| skillrecordings/egghead-next.cursor/rules/project-update-user-rules.mdc · 1.4k | Cursor rules | buildtestlint-formatstyle+7 | 96/100 | 3 days ago | |
| nerds-odd-e/doughnut.cursor/rules/cli.mdc · 49 | Cursor rules | setupbuildteststyle+4 | 96/100 | 3 days ago | |
| skillrecordings/egghead-next.cursor/rules/gh-task-plan.mdc · 1.4k | Cursor rules | teststylearchtypes+2 | 96/100 | 3 days ago | |
| skillrecordings/egghead-next.cursor/rules/project-update-rules.mdc · 1.4k | Cursor rules | buildtestlint-formatstyle+7 | 96/100 | 3 days ago |
