Re-sync the generated agent-discovery bridges from .agents/ — the .claude/skills/ and .claude/commands/ copies (Windows; symlinked and auto-synced on Linux/macOS) and the .cursor/rules/ + .cursor/commands/ bridges (any OS, if Cursor is set up on this clone). Run after editing skills or commands.
Interactive, consent-driven setup for a new OrangeHRM developer — stands up the Docker dev environment, mounts this repo into a PHP/DB container stack, installs the app, and verifies it loads. Explains each step before doing it and asks before changing anything on their machine.
Reference for OrangeHRM's pluggable authentication system — AuthProviderChain (DI-registered as Services::AUTHPROVIDERCHAIN, holds an ordered list of AbstractAuthProvider implementations and dispatches authenticate() to the highest-priority one that accepts), AbstractAuthProvider (authenticate(AuthParams): bool +…
Reference for OrangeHRM's authorization model — how REST endpoints and Vue/page controllers are gated by authentication, role-based screen/data-group permissions, and the marker interface that opts controllers out for pre-login routes. Use whenever the user is adding a new REST endpoint or page, making something…
Reference for OrangeHRM supported-version alignment across PHP, Composer, installer system requirements, MySQL/MariaDB, webservers, browser/frontend targets, Node/Yarn, Docker dev-environment services, and GitHub Actions matrices. Use whenever the user asks about supported versions, changes…
Reference for OrangeHRM's hshrconfig key/value settings table — ConfigService (the runtime accessor with typed getters/setters and KEY constants), ConfigServiceTrait for DI access, ConfigHelper (the migration-time accessor used during install/upgrade), key naming convention ( . ), and the deliberate choice of when to…
Reference for OrangeHRM's two Symfony Console entry points — bin/console (production console, lightweight, plugin-registered commands like cache:clear / orm:generate-proxies / orangehrm:run-schedule) and devTools/core/console.php (developer-only with its own composer.json, registers commands like php-cs-fix…
Reference for writing query/persistence code in OrangeHRM — the plugin-specific Dao classes that extend OrangeHRM\Core\Dao\BaseDao, the EntityManagerHelperTrait and its 13 methods, the QueryBuilder patterns the codebase uses heavily (joins via relation aliases, $q->expr()->orX/andX/like/concat/in/isNull, conditional…
Reference for managing OrangeHRM Composer and Yarn dependencies — where composer.json and package.json files live, running package-manager commands inside the Docker dev environment, using the lowest supported PHP version from the relevant composer.json for Composer install/update/require, respecting packageManager…
Reference for the OrangeHRM Docker-based local development environment — container layout, hostnames, common docker compose commands, how to shell into PHP containers, how to access the DB, and the LOCALSRC mounting convention. Use whenever the user asks about running OrangeHRM locally, which PHP version to use…
Framework-level reference for how OrangeHRM wires up Doctrine ORM 2.20 — the single EntityManager singleton, multi-path entity discovery driven by ohrmpluginpaths, the multi-path OrangeHRM\Entity\ PSR-4 namespace in src/composer.json, the dev/prod cache split (ArrayAdapter vs FilesystemAdapter), proxy auto-generation…
Reference for the wider OrangeHRM Starter ecosystem — upstream/source repositories, mobile app repositories and store listings, DockerHub image, cloud package and AWS Marketplace distribution, SourceForge and GitHub releases, Starter API docs, end-user help, demo site, and product page. Use whenever the user asks…
Reference for defining Doctrine entities in OrangeHRM — the docblock annotation conventions, table-name conventions (ohrm for new tables, hshr for legacy 4.x-imported tables), column types and options, ID strategies, relations (ManyToOne / OneToMany / ManyToMany with mappedBy / inversedBy / cascade / JoinColumn /…
Reference for OrangeHRM's event system — the EventDispatcher (Symfony EventDispatcher with no project-level customization), AbstractEventSubscriber for class-based subscribers, the per-plugin Subscriber/ and Event/ directories, the Events constant-holder class convention, Event-extending event payload classes…
Reference for data flow in the OrangeHRM Vue frontend — the APIService axios wrapper that mirrors backend /api/v2/... routes 1:1, its 401/422 interceptors and ETag-based response caching in prod, the data-loading composables (usePaginate for list endpoints with reactive filter/sort, useSort, useInfiniteScroll), the…
Entry-point reference for OrangeHRM's Vue 3 frontend — the per-page mini-SPA architecture (no vue-router; each backend page-controller mounts one Vue root component into the Twig shell), the four-step page registration flow, plugin-frontend layout under src/client/src/orangehrm{X}Plugin/, the three import aliases (@/…
Reference for OrangeHRM's cross-cutting Vue app plugins — i18n ($t(key, params) with module-grouped keys matching backend lang-string groups, the translate() factory for non-component contexts), ACL ($can.read/create/update/delete('datagroupname') where the data group string matches ohrmdatagroup.name from the backend…
Catalog of OrangeHRM's framework-wide helper traits and helper services — the trait composition pattern (services, decorators, subscribers, commands, endpoints all use these), the core helper services (DateTimeHelperService, NumberHelperService, TextHelperService, NormalizerService, MenuService), the framework-level…
Reference for OrangeHRM's email system — EmailService (the main service for composing and sending mail), the EmailConfiguration entity that stores SMTP/sendmail settings (with smtpPassword encrypted at rest), MailerSubscriber that processes the email queue on KernelEvents::TERMINATE (deferred sending so the user gets…
Reference for OrangeHRM's menu system — the MenuItem entity in ohrmmenuitem (hierarchical via parentid + level, ordered by orderhint, linked to a Screen via screenid), the side panel + top menu rendering pipeline (server-computed in MenuService::getMenuItems(), passed to the Twig layout as JSON, consumed by ), the…
Reference for OrangeHRM database migrations — the installer/Migration/V{x}/Migration.php pattern, what runs them (the installer for fresh databases, the upgrader for existing instances), the MIGRATIONSMAP registry, and the helpers available inside a migration (SchemaHelper, LangStringHelper, ConfigHelper…
Reference for OrangeHRM's OpenAPI v3 annotations via zircote/swagger-php — what to add to Endpoint methods and Model classes, the project's shared component refs (RecordNotFound, ForbiddenResponse, sortOrder, limit, offset), how class constants are used inside annotations, and the generate-open-api-doc command. Use…
Reference for shaping OrangeHRM REST API v2 responses — the Normalizable + ModelTrait contract, writing a Model class that maps a Doctrine entity to a JSON object, the filter array (getter chain — supports nested-getter sequences for related entities), the attributeNames array (output JSON keys)…