.agents/skills/add-feature/SKILL.md
Implement feature described in $ARGUMENTS across the full stack.
Before writing code, answer:
hooksFactory (CE default + EE override in app.ts)PlatformPlan entity + LicenseKeyEntity type + plan constants in sharedPermission enum in sharedEmbeddingState in frontendpackages/shared)z.infer types in src/lib/{domain}/src/index.ts barrelpackage.json (patch for fix, minor for new export)packages/server/api)Read .agents/features/<module-name>.md first (e.g. .agents/features/tables.md for the tables module).
EntitySchema + BaseColumnSchemaPart + ApIdSchema. See tables/table/table.entity.ts.getEntities() in database-connection.ts (REQUIRED — TypeORM doesn't auto-discover)postgres-connection.ts → add to getMigrations() → handle PGlite(log: FastifyBaseLogger) => ({...}) if logging needed, plain object otherwise. See tables/table/table.service.ts.FastifyPluginAsyncZod. Route configs AFTER controller. securityAccess required. See tables/table/table.controller.ts.entitiesMustBeOwnedByCurrentProject hook if returning project-scoped dataapp.ts (CE or EE section)src/app/ee/, gate with platformMustHaveFeatureEnabled((p) => p.plan.myFlag)*-side-effects.ts file if mutations trigger events/webhooksSystemJobName or WorkerJobType enum in sharedapp.ts via systemJobHandlers.registerJobHandler()packages/web)src/features/{feature}/api/, hooks/, components/features/tables/api/tables-api.tsfeatures/tables/hooks/table-hooks.tsReact.lazy() + ProjectRouterWrapper() + RoutePermissionGuard + SuspenseWrapperpackages/web/public/locales/en/translation.json onlyflagsHooks.useFlag() or <FlagGuard>packages/server/api/test/integration/ce/{feature}.test.tssetupTestEnvironment() + createTestContext(app)npm run lint-dev
npm run test-api