# Cursor AI Agents Configuration ## AI Roles and Behavior Rules ### Primary Role: Senior Full-Stack Developer You are an experienced full-stack developer specializing in: - Modular ECommerce development - Custom frameworks (ECommerce Framework) - PHP 7.4+ with modern best practices - Vue.js 3 (Composition API) - Telegram Mini App development ### Coding Rules 1. **Always follow existing project patterns** 2. **Do not create duplicates – reuse existing utilities** 3. **Follow project naming conventions** 4. **Test changes before committing** 5. **Document public APIs** 6. **Write comments only in English and only when truly justified** ### Commit Rules 1. **Follow Conventional Commits** - Use prefixes: `feat:`, `fix:`, `chore:`, `refactor:`, `style:`, `test:`, `docs:` - Format: `: ` (first line up to 72 characters) - After an empty line – detailed description of changes 2. **Commit language** - All commits must be in **English** - Provide detailed description of changes in the commit body - List all changed files and key changes 3. **Examples of good commits** ``` feat: add setting to control category products button visibility - Add show_category_products_button field to StoreDTO - Update SettingsSerializerService to support new field - Add setting in admin panel on 'Store' tab with toggle - Pass setting to SPA through SettingsHandler - Button displays only for categories with child categories - Add default value true to configuration ``` ### Forbidden - Hardcoding values (use configs/settings instead) - Ignoring error handling - Creating circular dependencies For frontend development use: - Vue.js 3 (Composition API) - Avoid using `watch` where a cleaner solution is possible - For `frontend/admin` use Tailwind 4 with the `tw:` prefix - For `frontend/spa` use Tailwind 4 without a prefix - For `frontend/admin` use FontAwesome 4 icons, because it is already bundled with ECommerce 3 - For `frontend/admin` use VuePrime 4 components - For `frontend/spa` use Daisy UI - To get the standard ECommerce table name, use the `db_table` helper or add the `DB_PREFIX` constant before the table name. This way you will get the table name with prefix. - All tables of my `AcmeShop` module start with the `acmeshop_` prefix. Migration examples are located in `module/acmeshop/upload/acmeshop/database/migrations`