filipebraida/adonisjs-starter-kit
Instructions file CodexOpenCode
Instructions for filipebraida/adonisjs-starter-kit, covering agent instructions, meta-rule, scope, stack and commands.
filipebraida/adonisjs-starter-kit
Instructions file CodexOpenCode
Instructions for filipebraida/adonisjs-starter-kit, covering agent instructions, meta-rule, scope, stack and commands.
filipebraida/adonisjs-starter-kit
Instructions file
Instructions for filipebraida/adonisjs-starter-kit, a project described as: Starter kit for AdonisJS projects using a monorepo setup.
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Action + event pattern for AdonisJS. Actions are single-purpose classes with .handle(input); they never touch HttpContext and never call side-effect code (mail, notifications, transmit) directly — they emit a domain event and a listener wired in /start/events.ts runs the effect. Use when adding a new action, wiring a…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
File uploads with derived variants in an AdonisJS app via @jrmc/adonis-attachment. @attachment() decorator on a Lucid model + converters config drives image resize/reformat (e.g. webp thumbnails). URLs are pre-computed on read via a model helper. Use when adding an upload field, changing a converter, testing…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
RBAC + Bouncer pattern in an AdonisJS + Inertia app. Capabilities live in a PERMISSIONS const, role slugs in ROLES; a WithRoles mixin composes into User to expose hasPermission / hasRole / syncRoles; BasePolicy subclasses gate routes; the frontend consumes a typed useCan() prop. Escalation is protected in depth. Use…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Build an end-to-end CRUD stack in AdonisJS + Inertia: resource route → thin controller → VineJS validator → Bouncer policy → single-purpose action → transformer variant → Inertia page. Trigger on: "add CRUD for X", "create resource", "list/create/edit/delete X", "resource endpoint".
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Execute a git commit that follows semantic conventional-commits — type, optional scope, imperative subject in English under 70 chars, body explaining WHY. User-invoked via /git-commit or "/commit".
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Locales are declared in config/i18n.ts (supportedLocales, defaultLocale, loaders). Translation JSON lives per module at app/ /resources/lang/ / .json. Keys are namespaced by module (common.layout.navMain.dashboard), so the file at app/common/resources/lang/en/common.json doesn't repeat common. inside — the loader adds…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Inertia + React 19 patterns in an AdonisJS app. Pages resolve from module dirs (app/ /ui/pages/), shared props flow from a middleware, forms use useForm + Tuyau urlFor for type-safe URLs, and modals go through a controller helper. Use when adding an Inertia page, writing a form, reading shared props, or wiring a route…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Layout shells in an AdonisJS + Inertia app. Instead of a runtime layout chooser, each context has its own purpose-built shell that coexists as a distinct React component. Every page picks its shell explicitly by import. Use when adding a new page (which shell to import), when adding a new area of the app (which shell…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Transactional email in an AdonisJS app — @adonisjs/mail classes extending BaseMail, MJML templates via a shared @email.layout component, and mailContext() for appName/appUrl. Never author raw HTML+CSS blocks. Use when adding a new email, editing an existing template, testing mail with mail.fake(), or wiring the SMTP…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Lucid migrations in this starter kit. Convention here is edit the existing create table.ts migration + run migration:fresh, not layering altertable migrations on top — this is a starter kit, no production data. Migration paths are declared per module in config/database.ts. app/core/database/schema.ts is auto-generated…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
How to add a new module to this AdonisJS monorepo — prefer node ace make:module, which scaffolds and wires every touchpoint. User-invoked via /module-scaffolding when wiring a module by hand or adding a piece later.
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
In-app notifications + realtime SSE in an AdonisJS + Inertia app. Stack: @facteurjs/adonisjs for the notification classes and delivery channels + @adonisjs/transmit for the SSE transport. Notifications persist to Postgres and push to a per-user SSE channel. Bell + unread badge in the logged-in shell. Emission goes…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Read-only query patterns in an AdonisJS + Inertia app — two flavors. List queries for CRUD tables (Lucid paginator with search + filter + sort). Read models for aggregate screens (dashboards, reports) with one query per business concept composed by the controller. Types live in the query file and cross to the frontend…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Route definitions in an AdonisJS module. Prefer router.resource(...) for CRUD verbs; put verb-only actions (activate, publish, finalize) as separate router.post/get/delete(...). Always pin numeric params with router.matchers.number() — otherwise a non-numeric URL falls through to the controller and blows up on the…
filipebraida/adonisjs-starter-kit
Skill Claude CodeCodex
Japa test patterns for an AdonisJS app. Functional specs hit real Postgres wrapped in per-test transactions; unit specs stub deps with sinon. Fakes are mandatory for anything that reaches out (mail, drive, emitter, transmit). Trigger on: "write test", "add spec", "cover with tests", "how do we test X", "mock", "fake"…