skills/vendix-settings-system/SKILL.md
Store and organization settings persistence, defaults, templates, branding, and frontend integration. Trigger: When working with settings configuration, adding settings sections, modifying store_settings/organization_settings, or debugging settings defaults/sync.
npx skillsauth add rzyfront/vendix vendix-settings-systemInstall 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 for store_settings, organization_settings, hardcoded defaults, manual templates, branding persistence, and settings UI integration. Use vendix-panel-ui for sidebar/module visibility details.
| Concern | Source |
| --- | --- |
| Store settings defaults | apps/backend/src/domains/store/settings/defaults/default-store-settings.ts |
| Store settings type | apps/backend/src/domains/store/settings/interfaces/store-settings.interface.ts |
| Store settings API | apps/backend/src/domains/store/settings/settings.service.ts and controller |
| Organization settings defaults | apps/backend/src/domains/organization/settings/defaults/default-organization-settings.ts |
| Organization settings API | apps/backend/src/domains/organization/settings/settings.service.ts and controller |
| Manual templates | default_templates seeded by apps/backend/prisma/seeds/default-templates.seed.ts |
| Store settings frontend | apps/frontend/src/app/private/modules/store/settings/general/* |
store_settings.settings.branding is the source of truth for store branding.app settings are generated or mapped for frontend compatibility; do not make app the new source of truth.stores: name, logo_url, store_type, and timezone.getDefaultStoreSettings() is the primary store default path.default_templates.store_default_settings is manual/template-based and may lag hardcoded defaults; do not treat it as the only source of defaults.store_settings is a scoped singleton row; use vendix-prisma-scopes before changing Prisma access patterns for it.saveSettingsNow(), not BehaviorSubject autosave.store-settings.interface.ts.default-store-settings.ts.settings-schemas.dto.ts and update-settings.dto.ts.settings.service.ts merge/sync logic only if the section affects other tables.default_templates only if manual template application should include the section.StorePrismaService, avoid findUnique for store_settings reads because scoped filters can turn the unique lookup into an invalid WhereUniqueInput with AND.findStoreSettings(store_id) that uses findFirst({ where: { store_id } }).updateMany({ where: { store_id }, data }) or another scope-safe write shape. Use upsert only when the scoped service preserves the unique field at the top level.mergeStoreSettingsWithDefaults() before reading nested sections so missing JSON keys do not force setup-mode defaults over existing production data.vendix-s3-storage before editing upload or URL persistence behavior.The current store settings UI uses Angular signals for local state and explicit save actions. Do not reintroduce legacy BehaviorSubject autosave examples without checking the current component/service.
Key files:
apps/frontend/src/app/private/modules/store/settings/general/services/store-settings.service.tsapps/frontend/src/app/private/modules/store/settings/general/general-settings.component.ts| Need | Use |
| --- | --- |
| Sidebar/module visibility | vendix-panel-ui |
| Theme tokens and CSS variables | vendix-frontend-theme |
| S3 logo/favicon handling | vendix-s3-storage |
| Prisma schema changes | vendix-prisma-schema and vendix-prisma-migrations |
| Mobile-native settings UI | Knowledge gap until mobile skills exist |
vendix-panel-ui - panel_ui menu visibilityvendix-s3-storage - Logo/favicon URL handlingvendix-zoneless-signals - Frontend signals patternsvendix-prisma-schema - Settings schema changesdevelopment
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.