skills/vendix-naming-conventions/SKILL.md
Naming conventions for Vendix TypeScript, Angular, NestJS, Prisma, files, and routes. Trigger: Writing Code (Naming), creating files/classes/interfaces/enums, or reviewing naming consistency.
npx skillsauth add rzyfront/vendix vendix-naming-conventionsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to keep names consistent with the existing Vendix codebase. Do not rename existing persisted database objects just to satisfy a convention; schema changes require the Prisma migration skills.
| Item | Convention | Example |
| --- | --- | --- |
| Variables and properties | camelCase | userName, orderTotal, isActive |
| Functions and methods | camelCase | getUserData(), calculateOrderTotal() |
| Classes | PascalCase | UserService, ProductListComponent |
| Interfaces and types | PascalCase | ApiResponse, CreateUserDto |
| Enum names | PascalCase | UserRole, OrderStatus |
| Enum members in TS code | follow existing enum source | Prisma generated enums may be lowercase or uppercase depending on schema |
| Constants | SCREAMING_SNAKE_CASE for true constants | MAX_RETRIES, DEFAULT_TIMEOUT |
Avoid forced snake_case in TypeScript variables unless the name mirrors database fields, external API payloads, Prisma model fields, or an existing DTO contract.
| Item | Convention | Example |
| --- | --- | --- |
| Files | kebab-case with role suffix | user.service.ts, order.controller.ts |
| Folders | kebab-case | user-management/, product-list/ |
| Angular component selectors | app-kebab-case | app-user-profile |
| NestJS route paths | kebab-case | @Controller('user-management') |
Vendix Prisma schema mirrors the existing database naming style:
snake_case, e.g. users, sales_orders.snake_case, e.g. organization_id, created_at.snake_case with _enum, e.g. user_state_enum.snake_case, while some protocol-like values are uppercase, e.g. HTTP methods.Do not rename Prisma models, columns, or enum values without loading vendix-prisma-schema and vendix-prisma-migrations.
| Type | Suffix |
| --- | --- |
| Angular component | Component |
| Angular service | Service |
| Angular facade | Facade |
| NestJS controller | Controller |
| NestJS service | Service |
| NestJS module | Module |
| Guard | Guard |
| Interceptor | Interceptor |
| Middleware | Middleware |
| Situation | Use |
| --- | --- |
| New TS variable/function | camelCase |
| New class/interface/type | PascalCase |
| New file/folder | kebab-case |
| New Prisma DB field | existing schema style, usually snake_case |
| External API uses snake_case | Preserve payload contract or map at boundary |
| Existing code in same file uses a local pattern | Follow local pattern unless the task is to refactor naming |
vendix-prisma-schema - Prisma naming and schema editsvendix-prisma-migrations - Safe database renames/migrationsvendix-frontend-component - Angular component structurevendix-backend-domain - Backend domain structuredevelopment
Mobile app development rules for Vendix Expo/React Native project. Trigger: When editing, creating, or modifying any file under apps/mobile, or when developing mobile-specific features.
development
Feature gating by store subscription state: global store write guard, AI feature gate, Redis feature resolution, quota consumption, frontend paywall interceptor, banner, and subscription UI states. Trigger: When adding feature gates, paywalls, subscription-based access control, protecting store write operations, AI feature gates, or rollout flags.
testing
SaaS subscription billing for Vendix stores: plan pricing, invoices, Wompi platform payments, manual payments, partner commissions, payouts, proration, and dunning. Trigger: When creating SaaS invoices, working with partner rev-share, margin/surcharge pricing, invoice sequence allocation, partner payout batches, subscription payments, manual payments, or dunning flows.
development
Periodic quota counters with Redis, UTC period keys, Lua-based idempotent AI quota consumption, request-id deduplication, and post-success consumption. Trigger: When building quota counters, enforcing monthly/daily feature caps, or reusing AI quota patterns for uploads, emails, exports, or rate-limited features.