{"slug":"php","title":"PHP","extensions":[".php"],"entry_languages":["PHP"],"prompts":34,"repos":3,"sample":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite","checks":7},{"repository":"laravel/framework","slug":"laravel-framework","checks":0},{"repository":"getsentry/sentry-php","slug":"getsentry-sentry-php","checks":0}],"tools":[{"id":"ci-matrix","method":"testing","kind":"version-matrix","languages":["*"],"upstream":"https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["analyze (language: 1)"],"run":"analyze (language: 1)","via":null,"triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},{"id":"codeql","method":"static_analysis","kind":"security-scanning","languages":["*"],"upstream":"https://github.com/github/codeql","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["uses github/codeql-action/analyze"],"run":null,"via":"GitHub Action github/codeql-action/analyze","triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},{"id":"semgrep","method":"static_analysis","kind":"security-scanning","languages":["*"],"upstream":"https://github.com/semgrep/semgrep","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["semgrep scan --config .semgrep --metrics=off --exclude .semgrep --json --output semgrep.json src/Appwrite app/controllers app/init","semgrep scan --config .semgrep --metrics=off --exclude .semgrep --sarif --output semgrep.sarif src/Appwrite app/controllers app/init","semgrep test .semgrep"],"run":"semgrep scan --config .semgrep --metrics=off --exclude .semgrep --json --output semgrep.json src/Appwrite app/controllers app/init","via":null,"triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]}],"headline":[],"raw_md":"https://awesomereviewers.com/raw/verify/php.md","raw_json":"https://awesomereviewers.com/raw/verify/php.json","url":"https://awesomereviewers.com/verify/php/","baseline":{"slug":"every-change","title":"Any change","topics":["Code Style","Naming Conventions"],"checks":[{"kind":"formatting","title":"Formatting","method":"formatting","method_slug":"formatting","catches":"Layout drift that buries the real change in the diff.","tool":null,"alternatives":[],"note":null},{"kind":"linting","title":"Linting","method":"static_analysis","method_slug":"static-analysis","catches":"Bug-prone patterns, unused code and conventions the formatter does not cover.","tool":null,"alternatives":[],"note":null},{"kind":"type-checking","title":"Type checking","method":"static_analysis","method_slug":"static-analysis","catches":"Wrong types, unhandled null or None, call signatures broken across modules.","tool":null,"alternatives":[],"note":null},{"kind":"unit-tests","title":"Unit and integration tests","method":"testing","method_slug":"testing","catches":"Behaviour regressions on the paths the tests exercise.","tool":null,"alternatives":[],"note":null}],"prompts":[{"slug":"appwrite-consistent-terminology-propagation","title":"Consistent terminology propagation","description":"When changing terminology or naming conventions in a codebase, ensure complete and consistent propagation across all related code artifacts. This includes variable names, method names, parameters, error messages, documentation, comments, and any other references. Inconsistent terminology creates cognitive overhead, leads to bugs, and hampers maintainability.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Naming Conventions","language":"PHP","updated":"2025-06-19","comments":15,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-consistent-terminology-propagation.md"},{"slug":"sentry-php-split-for-better-readability","title":"Split for better readability","description":"Break long lines and complex structures across multiple lines to improve code readability. Follow these guidelines: 1. Keep line length around 80 characters (soft limit)","repository":"getsentry/sentry-php","domain":"observability","topic":"Code Style","language":"PHP","updated":"2022-09-26","comments":11,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-split-for-better-readability.md"},{"slug":"framework-optimize-for-code-readability","title":"Optimize for code readability","description":"Prioritize code readability over clever solutions by: 1. Using early returns to reduce nesting 2. Leveraging modern PHP features when they improve clarity","repository":"laravel/framework","domain":"app-frameworks","topic":"Code Style","language":"PHP","updated":"2025-05-22","comments":10,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-optimize-for-code-readability.md"},{"slug":"sentry-php-descriptive-identifier-naming","title":"Descriptive identifier naming","description":"Choose meaningful, self-explanatory names for variables, parameters, properties, and methods that clearly convey their purpose. Avoid abbreviations and acronyms unless they're widely understood industry standards.","repository":"getsentry/sentry-php","domain":"observability","topic":"Naming Conventions","language":"PHP","updated":"2022-09-23","comments":9,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-descriptive-identifier-naming.md"},{"slug":"framework-name-indicates-clear-purpose","title":"Name indicates clear purpose","description":"Names should clearly indicate their purpose, type, and behavior. This applies to methods, variables, and parameters. Choose names that are self-documenting and unambiguous.","repository":"laravel/framework","domain":"app-frameworks","topic":"Naming Conventions","language":"PHP","updated":"2025-06-30","comments":6,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-name-indicates-clear-purpose.md"},{"slug":"appwrite-use-object-methods-consistently","title":"Use object methods consistently","description":"When working with Document objects, always use their accessor methods rather than array-style syntax. Use `$object->getAttribute('property')` and `$object->setAttribute('property', $value)` instead of `$object['property']`. This ensures proper encapsulation, maintains data integrity through validation, and creates more resilient code that won't break if the...","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Code Style","language":"PHP","updated":"2025-07-20","comments":3,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-use-object-methods-consistently.md"}],"prompt_count":6},"changes":[{"slug":"security","title":"Authentication, input handling, secrets, permissions","topics":["Security"],"checks":[{"kind":"security-scanning","title":"Security scanning","method":"static_analysis","method_slug":"static-analysis","catches":"Injection, unsafe APIs and tainted data reaching a sink.","tool":{"id":"codeql","method":"static_analysis","kind":"security-scanning","languages":["*"],"upstream":"https://github.com/github/codeql","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["uses github/codeql-action/analyze"],"run":null,"via":"GitHub Action github/codeql-action/analyze","triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},"alternatives":[{"id":"semgrep","repos":1,"share":33}],"note":null},{"kind":"secret-scanning","title":"Secret scanning","method":"static_analysis","method_slug":"static-analysis","catches":"Credentials and tokens committed to the repository.","tool":null,"alternatives":[],"note":null},{"kind":"dependency-audit","title":"Dependency audit","method":"supply_chain","method_slug":"supply-chain","catches":"Known-vulnerable or disallowed dependencies and licenses.","tool":null,"alternatives":[],"note":null}],"prompts":[{"slug":"appwrite-secure-authorization-skip-handling","title":"Secure authorization skip handling","description":"When using authorization bypass mechanisms like `Authorization::skip()`, ensure proper security validation is maintained. Authorization skipping should only be used for internal system operations where the caller already has appropriate permissions, never for user-facing operations that require access control.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Security","language":"PHP","updated":"2025-06-19","comments":6,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-secure-authorization-skip-handling.md"},{"slug":"framework-mark-sensitive-parameters","title":"Mark sensitive parameters","description":"Always use the `#[\\SensitiveParameter]` attribute for parameters containing sensitive information such as passwords, tokens, API keys, and personal identifiable information. This prevents accidental exposure of sensitive data in logs, stack traces, and debugging information, which could otherwise lead to security breaches.","repository":"laravel/framework","domain":"app-frameworks","topic":"Security","language":"PHP","updated":"2024-12-10","comments":2,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-mark-sensitive-parameters.md"}],"prompt_count":2},{"slug":"interfaces","title":"Public APIs, signatures, error paths, nullability","topics":["API","Error Handling","Null Handling"],"checks":[{"kind":"type-checking","title":"Type checking","method":"static_analysis","method_slug":"static-analysis","catches":"Wrong types, unhandled null or None, call signatures broken across modules.","tool":null,"alternatives":[],"note":null},{"kind":"unit-tests","title":"Unit and integration tests","method":"testing","method_slug":"testing","catches":"Behaviour regressions on the paths the tests exercise.","tool":null,"alternatives":[],"note":null},{"kind":"property-tests","title":"Property-based tests","method":"testing","method_slug":"testing","catches":"Edge-case inputs nobody wrote a test for; invariants over generated data.","tool":null,"alternatives":[],"note":null}],"prompts":[{"slug":"appwrite-enforce-api-endpoint-consistency","title":"Enforce API endpoint consistency","description":"When implementing or modifying API endpoints, ensure consistency across related routes by checking: 1. Parameter naming matches between route definition and handler:","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"API","language":"PHP","updated":"2025-06-19","comments":10,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-enforce-api-endpoint-consistency.md"},{"slug":"appwrite-handle-errors-gracefully-always","title":"Handle errors gracefully always","description":"Always implement graceful error handling for resource lookups, data parsing, and system operations. Catch specific exceptions, provide clear error messages, and ensure the system can continue operating in a degraded state rather than failing completely.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Error Handling","language":"PHP","updated":"2025-06-18","comments":10,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-handle-errors-gracefully-always.md"},{"slug":"framework-explicit-null-handling","title":"Explicit null handling","description":"Use explicit identity comparisons for null checks and leverage modern PHP null-handling features to create more reliable, readable code. ## Key practices:","repository":"laravel/framework","domain":"app-frameworks","topic":"Null Handling","language":"PHP","updated":"2025-05-28","comments":9,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-explicit-null-handling.md"},{"slug":"framework-use-semantic-exceptions","title":"Use semantic exceptions","description":"Choose exception types that accurately reflect the nature of the error. Use `LogicException` for developer errors like incorrect usage, `InvalidArgumentException` for invalid inputs, `OutOfBoundsException` for range violations, and specialized exceptions for domain-specific errors.","repository":"laravel/framework","domain":"app-frameworks","topic":"Error Handling","language":"PHP","updated":"2025-05-09","comments":8,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-use-semantic-exceptions.md"},{"slug":"sentry-php-evolve-api-safely","title":"Evolve API safely","description":"When modifying existing APIs, implement changes that maintain backward compatibility while enabling new functionality. For public-facing APIs, avoid breaking changes outside of major version bumps.","repository":"getsentry/sentry-php","domain":"observability","topic":"API","language":"PHP","updated":"2025-06-07","comments":7,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-evolve-api-safely.md"},{"slug":"sentry-php-explicit-null-handling","title":"Explicit null handling","description":"Always be explicit and consistent when handling null values to improve code clarity and prevent subtle bugs. This applies to null checks, nullable type declarations, and function parameters.","repository":"getsentry/sentry-php","domain":"observability","topic":"Null Handling","language":"PHP","updated":"2023-07-29","comments":6,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-explicit-null-handling.md"},{"slug":"framework-design-flexible-apis","title":"Design flexible APIs","description":"When designing APIs, prioritize flexibility and developer experience by: 1. **Accept broader parameter types** - Use `callable` instead of `Closure` to support various invocation patterns:","repository":"laravel/framework","domain":"app-frameworks","topic":"API","language":"PHP","updated":"2025-03-16","comments":5,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-design-flexible-apis.md"},{"slug":"sentry-php-propagate-errors-with-context","title":"Propagate errors with context","description":"Always propagate errors appropriately by rethrowing caught exceptions and maintaining error context. Catch exceptions only when you can handle them meaningfully, and ensure errors aren't silently swallowed.","repository":"getsentry/sentry-php","domain":"observability","topic":"Error Handling","language":"PHP","updated":"2024-01-16","comments":5,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-propagate-errors-with-context.md"},{"slug":"appwrite-guard-database-query-results","title":"Guard database query results","description":"Always validate database query results before accessing their methods or properties. Methods like `findOne()`, `getDocument()`, and similar database operations can return null or empty documents. Failing to check these results before access leads to runtime errors.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Null Handling","language":"PHP","updated":"2025-05-18","comments":3,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-guard-database-query-results.md"}],"prompt_count":9},{"slug":"services","title":"Service and framework code","topics":["Fastify","NestJS","Spring","Axum","Celery","Temporal"],"checks":[{"kind":"unit-tests","title":"Unit and integration tests","method":"testing","method_slug":"testing","catches":"Behaviour regressions on the paths the tests exercise.","tool":null,"alternatives":[],"note":null},{"kind":"version-matrix","title":"Version and platform matrix","method":"testing","method_slug":"testing","catches":"Breakage on a runtime version, OS or feature combination you did not run locally.","tool":{"id":"ci-matrix","method":"testing","kind":"version-matrix","languages":["*"],"upstream":"https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["analyze (language: 1)"],"run":"analyze (language: 1)","via":null,"triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},"alternatives":[],"note":null}],"prompts":[],"prompt_count":0},{"slug":"algorithms","title":"Algorithms, parsers, data transforms","topics":["Algorithms"],"checks":[{"kind":"property-tests","title":"Property-based tests","method":"testing","method_slug":"testing","catches":"Edge-case inputs nobody wrote a test for; invariants over generated data.","tool":null,"alternatives":[],"note":null},{"kind":"fuzzing","title":"Fuzzing","method":"testing","method_slug":"testing","catches":"Crashes, panics and hangs on malformed input, especially in parsers and decoders.","tool":null,"alternatives":[],"note":null},{"kind":"mutation-testing","title":"Mutation testing","method":"testing","method_slug":"testing","catches":"Tests that keep passing whatever the code does.","tool":null,"alternatives":[],"note":null},{"kind":"proofs","title":"Proofs and specifications","method":"formal","method_slug":"formal","catches":"Design-level bugs in protocols and algorithms, checked against a specification.","tool":null,"alternatives":[],"note":null}],"prompts":[{"slug":"sentry-php-optimize-regex-patterns","title":"Optimize regex patterns","description":"When using regular expressions, optimize for both performance and precision to ensure efficient and accurate pattern matching: 1. **Use non-capturing groups** when you don''t need to reference the matched content, reducing memory allocations:","repository":"getsentry/sentry-php","domain":"observability","topic":"Algorithms","language":"PHP","updated":"2022-05-15","comments":14,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-optimize-regex-patterns.md"},{"slug":"framework-optimize-loop-operations","title":"Optimize loop operations","description":"When writing loops, optimize for both readability and performance by following these key principles: 1. **Exit early** when a decision can be made: ```php","repository":"laravel/framework","domain":"app-frameworks","topic":"Algorithms","language":"PHP","updated":"2025-05-22","comments":4,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-optimize-loop-operations.md"}],"prompt_count":2},{"slug":"concurrency","title":"Threads, async code, locks, shared state","topics":["Concurrency"],"checks":[{"kind":"concurrency-model-checking","title":"Concurrency model checking","method":"formal","method_slug":"formal","catches":"Races and orderings that fail only under specific interleavings.","tool":null,"alternatives":[],"note":null},{"kind":"ub-detection","title":"Undefined-behaviour detection","method":"formal","method_slug":"formal","catches":"Memory-safety and aliasing violations in unsafe code.","tool":null,"alternatives":[],"note":null},{"kind":"property-tests","title":"Property-based tests","method":"testing","method_slug":"testing","catches":"Edge-case inputs nobody wrote a test for; invariants over generated data.","tool":null,"alternatives":[],"note":null}],"prompts":[],"prompt_count":0},{"slug":"networking","title":"Network calls, retries, timeouts, protocols","topics":["Networking","Axios"],"checks":[{"kind":"unit-tests","title":"Unit and integration tests","method":"testing","method_slug":"testing","catches":"Behaviour regressions on the paths the tests exercise.","tool":null,"alternatives":[],"note":null},{"kind":"fuzzing","title":"Fuzzing","method":"testing","method_slug":"testing","catches":"Crashes, panics and hangs on malformed input, especially in parsers and decoders.","tool":null,"alternatives":[],"note":null}],"prompts":[],"prompt_count":0},{"slug":"ui","title":"UI components and pages","topics":["React","Next","Next.js","Vue","Angular"],"checks":[{"kind":"browser-tests","title":"End-to-end browser tests","method":"testing","method_slug":"testing","catches":"User flows broken across components, routing and the network.","tool":null,"alternatives":[],"note":null},{"kind":"linting","title":"Linting","method":"static_analysis","method_slug":"static-analysis","catches":"Bug-prone patterns, unused code and conventions the formatter does not cover.","tool":null,"alternatives":[],"note":null}],"prompts":[],"prompt_count":0},{"slug":"data","title":"Databases, migrations, caching","topics":["Database","Migrations","Caching"],"checks":[{"kind":"unit-tests","title":"Unit and integration tests","method":"testing","method_slug":"testing","catches":"Behaviour regressions on the paths the tests exercise.","tool":null,"alternatives":[],"note":null},{"kind":"version-matrix","title":"Version and platform matrix","method":"testing","method_slug":"testing","catches":"Breakage on a runtime version, OS or feature combination you did not run locally.","tool":{"id":"ci-matrix","method":"testing","kind":"version-matrix","languages":["*"],"upstream":"https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["analyze (language: 1)"],"run":"analyze (language: 1)","via":null,"triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},"alternatives":[],"note":null}],"prompts":[{"slug":"appwrite-ensure-database-transactional-integrity","title":"Ensure database transactional integrity","description":"When performing multiple related database operations, use transactions and proper error handling to maintain data consistency. Without proper safeguards, partial failures can leave your database in an inconsistent state with orphaned or mismatched records.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Database","language":"PHP","updated":"2025-07-21","comments":9,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-ensure-database-transactional-integrity.md"},{"slug":"appwrite-comprehensive-migration-planning","title":"Comprehensive migration planning","description":"When changing identifier systems (e.g., from using `getInternalId()` to `getSequence()`), implement comprehensive migration strategies to preserve data integrity and backward compatibility. For each change:","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Migrations","language":"PHP","updated":"2025-07-21","comments":8,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-comprehensive-migration-planning.md"},{"slug":"framework-escape-column-names-properly","title":"Escape column names properly","description":"Always use the appropriate wrapping/escaping mechanism when generating SQL to prevent syntax errors and SQL injection vulnerabilities, especially when handling:","repository":"laravel/framework","domain":"app-frameworks","topic":"Database","language":"PHP","updated":"2024-12-27","comments":5,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-escape-column-names-properly.md"},{"slug":"framework-optimize-migration-code","title":"Optimize migration code","description":"When writing database migration code, prioritize clarity and efficiency to ensure migrations are reliable and maintainable across environments. Apply these practices:","repository":"laravel/framework","domain":"app-frameworks","topic":"Migrations","language":"PHP","updated":"2025-03-22","comments":4,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-optimize-migration-code.md"}],"prompt_count":4},{"slug":"performance","title":"Hot paths and performance","topics":["Performance Optimization"],"checks":[],"prompts":[{"slug":"framework-cache-expensive-operations","title":"Cache expensive operations","description":"Identify and cache results of expensive operations that may be called repeatedly during a request lifecycle, especially recursive functions or operations performed in loops. This reduces redundant processing and can significantly improve application performance.","repository":"laravel/framework","domain":"app-frameworks","topic":"Performance Optimization","language":"PHP","updated":"2025-06-19","comments":6,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-cache-expensive-operations.md"},{"slug":"sentry-php-minimize-file-memory-footprint","title":"Minimize file memory footprint","description":"When handling files in your application, minimize memory usage to optimize performance. Follow these guidelines: 1. **Avoid multiple reads**: Read file content only once and reuse it throughout your code. Each read operation loads the entire file into memory.","repository":"getsentry/sentry-php","domain":"observability","topic":"Performance Optimization","language":"PHP","updated":"2022-11-29","comments":3,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-minimize-file-memory-footprint.md"}],"prompt_count":2},{"slug":"ai","title":"Model, prompt and LLM code","topics":["AI","Pytorch"],"checks":[{"kind":"unit-tests","title":"Unit and integration tests","method":"testing","method_slug":"testing","catches":"Behaviour regressions on the paths the tests exercise.","tool":null,"alternatives":[],"note":null}],"prompts":[],"prompt_count":0},{"slug":"observability","title":"Logging, metrics, tracing","topics":["Logging","Observability"],"checks":[],"prompts":[],"prompt_count":0},{"slug":"ci-config","title":"CI workflows and configuration files","topics":["CI/CD","Configurations"],"checks":[{"kind":"workflow-linting","title":"CI workflow linting","method":"static_analysis","method_slug":"static-analysis","catches":"Broken GitHub Actions syntax, script injection, over-broad token permissions.","tool":null,"alternatives":[],"note":null},{"kind":"file-hygiene","title":"File hygiene","method":"formatting","method_slug":"formatting","catches":"Invalid JSON, YAML or TOML, merge markers, trailing whitespace, oversized files.","tool":null,"alternatives":[],"note":null}],"prompts":[{"slug":"appwrite-validate-environment-variables","title":"Validate environment variables","description":"Always validate environment variables before use and implement proper fallback strategies. For required variables, fail fast with clear error messages. For optional variables with empty values, ensure they don't short-circuit fallback chains.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Configurations","language":"PHP","updated":"2025-07-21","comments":10,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-validate-environment-variables.md"},{"slug":"framework-descriptive-configuration-keys","title":"Descriptive configuration keys","description":"Configuration keys should clearly indicate their value type, units, or expected format to prevent misunderstandings and errors. Include unit information directly in key names when appropriate and ensure documentation accurately reflects the default values and behavior.","repository":"laravel/framework","domain":"app-frameworks","topic":"Configurations","language":"PHP","updated":"2025-05-13","comments":4,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-descriptive-configuration-keys.md"},{"slug":"sentry-php-flexible-configuration-formats","title":"Flexible configuration formats","description":"Support multiple configuration formats where appropriate (string, callable, object) to accommodate different frameworks and usage patterns. This improves developer experience across different ecosystems (like Laravel, Symfony) while maintaining type safety through proper validation.","repository":"getsentry/sentry-php","domain":"observability","topic":"Configurations","language":"PHP","updated":"2021-01-28","comments":4,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-flexible-configuration-formats.md"}],"prompt_count":3},{"slug":"dependencies","title":"Dependencies and lockfiles","topics":[],"checks":[{"kind":"dependency-audit","title":"Dependency audit","method":"supply_chain","method_slug":"supply-chain","catches":"Known-vulnerable or disallowed dependencies and licenses.","tool":null,"alternatives":[],"note":null},{"kind":"lockfile-check","title":"Lockfile consistency","method":"supply_chain","method_slug":"supply-chain","catches":"A lockfile that no longer matches its manifest.","tool":null,"alternatives":[],"note":null},{"kind":"version-matrix","title":"Version and platform matrix","method":"testing","method_slug":"testing","catches":"Breakage on a runtime version, OS or feature combination you did not run locally.","tool":{"id":"ci-matrix","method":"testing","kind":"version-matrix","languages":["*"],"upstream":"https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["analyze (language: 1)"],"run":"analyze (language: 1)","via":null,"triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},"alternatives":[],"note":null}],"prompts":[],"prompt_count":0},{"slug":"tests","title":"The tests themselves","topics":["Testing"],"checks":[{"kind":"mutation-testing","title":"Mutation testing","method":"testing","method_slug":"testing","catches":"Tests that keep passing whatever the code does.","tool":null,"alternatives":[],"note":null},{"kind":"version-matrix","title":"Version and platform matrix","method":"testing","method_slug":"testing","catches":"Breakage on a runtime version, OS or feature combination you did not run locally.","tool":{"id":"ci-matrix","method":"testing","kind":"version-matrix","languages":["*"],"upstream":"https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations","docs":null,"autofix":false,"exit_codes":{},"repos":1,"share":33,"commands":["analyze (language: 1)"],"run":"analyze (language: 1)","via":null,"triggers":["ci"],"examples":[{"repository":"appwrite/appwrite","slug":"appwrite-appwrite"}]},"alternatives":[],"note":null}],"prompts":[{"slug":"framework-use-modern-phpunit-attributes","title":"Use modern PHPUnit attributes","description":"Prefer modern PHPUnit attributes over PHPDoc annotations for improved type safety, IDE support, and code readability in tests. Replace legacy annotation-style test decorators with their attribute counterparts:","repository":"laravel/framework","domain":"app-frameworks","topic":"Testing","language":"PHP","updated":"2025-06-30","comments":7,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-use-modern-phpunit-attributes.md"},{"slug":"sentry-php-use-data-providers-effectively","title":"Use data providers effectively","description":"Organize your test suite by using data providers to consolidate similar test cases rather than creating multiple test methods with duplicated logic. This improves maintainability, increases test coverage, and makes adding new test scenarios easier.","repository":"getsentry/sentry-php","domain":"observability","topic":"Testing","language":"PHP","updated":"2023-12-20","comments":7,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-use-data-providers-effectively.md"},{"slug":"appwrite-assert-response-fully-always","title":"Assert response fully always","description":"Always validate all relevant aspects of API responses in tests, including status codes, headers, and body content. Don't partially validate responses or make assumptions about response structure.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Testing","language":"PHP","updated":"2025-07-20","comments":5,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-assert-response-fully-always.md"}],"prompt_count":3},{"slug":"docs","title":"Documentation and comments","topics":["Documentation"],"checks":[{"kind":"docs-build","title":"Docs build","method":"static_analysis","method_slug":"static-analysis","catches":"Broken cross-references, links and markup in documentation.","tool":null,"alternatives":[],"note":null},{"kind":"spelling","title":"Spelling","method":"formatting","method_slug":"formatting","catches":"Typos in identifiers, comments and docs.","tool":null,"alternatives":[],"note":null}],"prompts":[{"slug":"sentry-php-purposeful-documentation-standards","title":"Purposeful documentation standards","description":"Documentation should convey purpose and behavior, not just replicate code structure. Each docblock should explain what a component does and why it exists, rather than merely restating its name or signature.","repository":"getsentry/sentry-php","domain":"observability","topic":"Documentation","language":"PHP","updated":"2020-11-16","comments":10,"stars":1873,"raw":"https://awesomereviewers.com/raw/sentry-php-purposeful-documentation-standards.md"},{"slug":"framework-precise-type-annotations","title":"Precise type annotations","description":"Always use the most specific and accurate type information possible in PHPDoc comments to improve static analysis, IDE autocompletion, and code clarity. Pay special attention to array types using appropriate syntax:","repository":"laravel/framework","domain":"app-frameworks","topic":"Documentation","language":"PHP","updated":"2025-06-13","comments":8,"stars":33763,"raw":"https://awesomereviewers.com/raw/framework-precise-type-annotations.md"},{"slug":"appwrite-keep-documentation-paths-current","title":"Keep documentation paths current","description":"Maintain accurate and consistent documentation paths, references, and descriptions across the codebase. When terminology or architecture changes, ensure all documentation references are updated to reflect the current state.","repository":"appwrite/appwrite","domain":"app-frameworks","topic":"Documentation","language":"PHP","updated":"2025-06-19","comments":7,"stars":51959,"raw":"https://awesomereviewers.com/raw/appwrite-keep-documentation-paths-current.md"}],"prompt_count":3}]}
