review-code

Review code changes following HMIS project standards. Use when reviewing a pull request, verifying code changes, or checking code quality. Covers CodeRabbit verification, backward compatibility, persi

SKILL.md

GitHub

Code Review Guidelines

Review code changes following HMIS project standards and patterns.

Review Checklist

1. Backward Compatibility

  • No modified existing constructor signatures
  • No renamed database columns (e.g., purcahseRate is intentional)
  • No renamed composite components without checking ALL usage
  • Entity properties kept alongside new DTO properties

2. AI Suggestion Verification

  • Never accept CodeRabbit/AI suggestions without verification
  • Check for existing implementations before adding null checks
  • Verify lazy initialization patterns (e.g., getBillFinanceDetails() already handles nulls)
  • Search codebase for existing patterns before adding new code

3. Persistence Configuration

  • persistence.xml must NOT contain hardcoded JNDI names
  • Must use ${JDBC_DATASOURCE} and ${JDBC_AUDIT_DATASOURCE}
  • No hardcoded DDL generation paths

4. JSF/XHTML Rules

  • AJAX update targets must be JSF components (not plain HTML)
  • No CSS/jQuery selectors in update/process attributes
  • Use h:outputText instead of HTML headings
  • PrimeFaces button classes, not Bootstrap

5. DTO Patterns

  • Direct JPQL constructor queries (not entity-to-DTO loops)
  • Use findLightsByJpql() with explicit cast
  • Only persisted fields in JPQL (not derived properties)
  • Wrapper types in DTO constructors

6. Security

  • New privileges added to Privileges.java enum (not reordering)
  • Privilege checks in controllers and XHTML rendered attributes
  • No credentials committed to git

7. Query Patterns

  • retired = false included in queries
  • inactive = false for item filtering where applicable
  • Proper null handling for optional relationships (LEFT JOIN)

Process

  1. Read the changed files
  2. Check each item in the checklist above
  3. Report findings with specific file:line references
  4. Suggest fixes for any issues found