Skip to content

Conversation

@kingston
Copy link
Collaborator

@kingston kingston commented Jul 7, 2025

Summary by CodeRabbit

  • New Features

    • Introduced improved authentication generators with enhanced integration for routing and context management.
    • Added a new Auth0 login route with robust validation and redirect handling.
    • Implemented an authentication loading gate component for improved error handling and user experience.
    • Enhanced admin and CRUD generator templates for more flexible and accurate route path management.
  • Bug Fixes

    • Fixed directory cleanup logic to properly handle nested directories during file deletions or renames.
    • Improved handling of empty ancestor directories for file operations.
  • Refactor

    • Streamlined route and file path resolution across admin and CRUD generators.
    • Updated naming conventions for generated files and hooks to use kebab-case for consistency.
    • Replaced deprecated or redundant authentication callback generators with a more unified pages generator.
    • Switched to toast notifications for error handling in generated forms.
  • Style

    • Enhanced alert messages and empty state UI with more descriptive titles and descriptions.
  • Documentation

    • Updated generator configuration files to reflect new template variables and improved documentation.
  • Tests

    • Added and expanded tests for directory cleanup utilities and file operations.
  • Chores

    • Updated VSCode settings to exclude additional generated files from search and file watching.
    • Removed obsolete files and exports related to deprecated authentication flows.

@changeset-bot
Copy link

changeset-bot bot commented Jul 7, 2025

🦋 Changeset detected

Latest commit: e1dbc76

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 17 packages
Name Type
@baseplate-dev/react-generators Patch
@baseplate-dev/plugin-auth Patch
@baseplate-dev/sync Patch
@baseplate-dev/project-builder-server Patch
@baseplate-dev/plugin-storage Patch
@baseplate-dev/project-builder-common Patch
@baseplate-dev/core-generators Patch
@baseplate-dev/fastify-generators Patch
@baseplate-dev/project-builder-lib Patch
@baseplate-dev/project-builder-test Patch
@baseplate-dev/project-builder-cli Patch
@baseplate-dev/project-builder-web Patch
@baseplate-dev/code-morph Patch
@baseplate-dev/create-project Patch
@baseplate-dev/tools Patch
@baseplate-dev/ui-components Patch
@baseplate-dev/utils Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Jul 7, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
baseplate-project-builder-web ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jul 7, 2025 6:20pm

@coderabbitai
Copy link

coderabbitai bot commented Jul 7, 2025

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (17)
  • tests/simple/packages/web/baseplate/file-id-map.json is excluded by !tests/**
  • tests/simple/packages/web/baseplate/generated/eslint.config.js is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/app/app-apollo-provider.tsx is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/app/app-routes.tsx is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/app/app.tsx is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/app/router.tsx is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/hooks/useStatus.ts is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/routes/__root.tsx is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/baseplate/generated/src/services/sentry.ts is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/packages/web/eslint.config.js is excluded by !tests/**
  • tests/simple/packages/web/src/app/app-apollo-provider.tsx is excluded by !tests/**
  • tests/simple/packages/web/src/app/app-routes.tsx is excluded by !tests/**
  • tests/simple/packages/web/src/app/app.tsx is excluded by !tests/**
  • tests/simple/packages/web/src/app/router.tsx is excluded by !tests/**
  • tests/simple/packages/web/src/hooks/useStatus.ts is excluded by !tests/**
  • tests/simple/packages/web/src/routes/__root.tsx is excluded by !tests/**
  • tests/simple/packages/web/src/services/sentry.ts is excluded by !tests/**

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This update refactors and enhances the code generation system for React and Auth0 authentication, focusing on improved integration with Tanstack Router. Key changes include replacing the Auth0 callback generator with a new Auth0 pages generator, updating route and context handling, refining directory cleanup logic, and modernizing naming conventions and code structure across generators and templates.

Changes

File(s) / Group Change Summary
.changeset/hot-tires-check.md, .changeset/two-rockets-tell.md Added changesets for patch updates to authentication generators and sync package.
.vscode/settings.json Expanded VSCode excludes to cover generated directories.
packages/core-generators/src/generators/node/eslint/react-rules.ts Updated ESLint rules for React, allowing specific error throws and filename case.
packages/project-builder-server/src/compiler/admin/index.ts Updated admin route paths to consistently use /admin prefix.
packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx Disabled autocomplete for new app name input.
packages/react-generators/src/generators/admin/admin-bull-board/* Refactored to use dynamic route path variable; updated dependencies and template variables.
packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx Improved empty state alert UI with title and description.
packages/react-generators/src/generators/admin/admin-crud-edit/* Switched to new route/file path methods, renamed template variables, updated error handling to use toast notifications.
packages/react-generators/src/generators/admin/admin-crud-list/* Updated to use new route/file path methods and improved empty state alert.
packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts Changed file path construction to use new output relative path method.
packages/react-generators/src/generators/admin/admin-home/* Added new root index route for redirect, updated template variables, and improved generator structure.
packages/react-generators/src/generators/admin/admin-layout/* Refactored to use route/file path and login URL variables; shifted authentication to route-level beforeLoad hook.
packages/react-generators/src/generators/apollo/react-apollo/* Integrated Apollo Client into router context; updated generator tasks and template exports.
packages/react-generators/src/generators/auth/_providers/*, packages/react-generators/src/generators/auth/_tasks/*, packages/react-generators/src/generators/auth/index.ts Added new auth context provider and tasks, updated exports.
packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts Refactored to remove direct session hook usage in generated fragments.
packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts Changed userId type from `string
packages/react-generators/src/generators/core/react-components/extractor.json, packages/react-generators/src/generators/core/react-components/templates/src/hooks/useStatus.ts Removed useStatus hook and related exports; added alert component exports.
packages/react-generators/src/generators/core/react-router/* Major refactor: added root context field support, new provider, updated templates for context-aware routing.
packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts, packages/react-generators/src/providers/routes.ts, packages/react-generators/src/providers/providers.json Replaced directory base methods with output relative path and route file path methods in providers.
packages/sync/src/output/clean-deleted-files.ts, packages/sync/src/utils/directories.ts Improved tracking and cleanup of renamed/deleted files and empty ancestor directories.
packages/sync/src/output/clean-deleted-files.unit.test.ts, packages/sync/src/utils/directories.unit.test.ts Added/updated tests for directory cleanup and renamed/deleted file handling.
plugins/plugin-auth/src/auth0/core/node.ts Switched from callback generator to new pages generator for Auth0 routes.
plugins/plugin-auth/src/auth0/generators/react/auth0-callback/* Deleted old Auth0 callback generator, templates, and configuration.
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/* Renamed files to kebab-case, updated imports, changed userId type.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/* Added new Auth0 pages generator, configuration, login route, and exports.
plugins/plugin-auth/src/auth0/generators/react/index.ts Updated exports to remove callback and add pages generator.
plugins/plugin-auth/src/auth0/generators/react/react-auth0/* Refactored generator to use new context/task structure, added AuthLoadedGate component, updated exports and configuration.
plugins/plugin-storage/src/generators/react/upload-components/* Renamed hook file to kebab-case and updated imports.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Browser
    participant TanstackRouter
    participant Auth0PagesGenerator
    participant Auth0
    participant App

    User->>Browser: Navigates to /auth/login
    Browser->>TanstackRouter: Matches /auth/login route
    TanstackRouter->>Auth0PagesGenerator: Executes beforeLoad
    Auth0PagesGenerator->>TanstackRouter: Checks if userId exists in context
    alt userId exists
        TanstackRouter->>Browser: Redirect to /
    else userId missing
        Auth0PagesGenerator->>Auth0: Triggers loginWithRedirect
        Auth0-->>Browser: Redirects to Auth0 login
    end
    Browser->>App: Shows Loader while redirecting
Loading
sequenceDiagram
    participant Generator
    participant ReactRoutesProvider
    participant ReactRouterProvider
    participant Template
    participant Output

    Generator->>ReactRoutesProvider: getRoutePrefix(), getRouteFilePath(), getOutputRelativePath()
    Generator->>ReactRouterProvider: getRootRouteDirectory()
    Generator->>Template: Passes TPL_ROUTE_PATH, TPL_LOGIN_URL_PATH, context fields
    Template->>Output: Generates route/component files with dynamic paths and context
Loading

Possibly related PRs

  • halfdomelabs/baseplate#445: Addresses file deletion and cleanup logic in the sync package, similar to the changes here for removeEmptyAncestorDirectories and renamed/deleted file handling.
  • halfdomelabs/baseplate#591: Migrates React generators from React Router to Tanstack Router, closely related to this PR's updates to Auth0 generators and route declarations.
  • halfdomelabs/baseplate#404: Refactors Auth0 generators and removes old callback-related code, directly paralleling the removal of the old Auth0 callback generator in this PR.

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🔭 Outside diff range comments (12)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1)

1-2: Type-checking disabled – please restore strict mode.
// @ts-nocheck contradicts the coding-guideline requirement for strict type checking in every *.ts/*.tsx file.

plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (1)

131-140: Tailwind class prefixes missing for plugin components.
Files under plugins/plugin-storage/**/* must prefix every Tailwind utility with storage-. Example:

-<div className={cn('max-w-md', className)}>
+<div className={cn('storage-max-w-md', className)}>

Please audit the component and apply the prefix everywhere (storage-flex, storage-h-12, …) to avoid global style collisions.

packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (1)

1-2: Strict typing disabled – remove @ts-nocheck.
Admin generator templates are compiled in consumer projects with strict on; leaving this pragma forces them to weaken their tsconfig.

-// @ts-nocheck
+// remove this line and ensure types pass
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)

1-1: Remove TypeScript checking suppression.

The // @ts-nocheck directive violates the coding guidelines which require "TypeScript with strict type checking" for **/*.{ts,tsx} files.

-// @ts-nocheck
packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (1)

1-1: Remove TypeScript checking suppression.

The // @ts-nocheck directive violates the coding guidelines which require "TypeScript with strict type checking" for **/*.{ts,tsx} files.

-// @ts-nocheck
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)

1-1: Remove TypeScript checking suppression.

The // @ts-nocheck directive violates the coding guidelines which require "TypeScript with strict type checking" for **/*.{ts,tsx} files.

-// @ts-nocheck
packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (1)

1-1: Remove @ts-nocheck directive to enable strict type checking.

The TypeScript strict type checking guideline requires type checking to be enabled. Consider addressing any type errors instead of disabling type checking entirely.

packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts (1)

54-65: Add authContextTask as a dependency so userId is defined before the useEffect snippet.

The auth-identify generator currently only depends on reactRouterConfig, but it emits a useEffect that references userId without ever injecting it. You need to wire in the existing authContextTask (which sets up const { userId } = useSession()) before you emit the identify fragment:

• In packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts
– Add the import:
ts import { authContextTask } from '#src/generators/auth/_tasks/auth-context.js';
– Update the task dependencies:
diff main: createGeneratorTask({ dependencies: { reactRouterConfig: reactRouterConfigProvider, + authContext: authContextTask, }, exports: { authIdentify: authIdentifyProvider.export(packageScope) }, run({ reactRouterConfig }) { … }
This ensures that the auth-context fragment (which declares userId) runs before your auth-identify fragment and prevents the undefined-userId runtime error.

packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (2)

114-120: Remove deprecated getDirectoryBase() from provider export.

The provider export still includes getDirectoryBase() which was removed from the ReactRoutesProvider interface. This inconsistency could cause runtime errors.

Apply this diff to fix the provider export:

            adminCrudEdit: {
-             getDirectoryBase: () => reactRoutes.getOutputRelativePath(),
              getSchemaPath: () => editSchemaPath,
              getSchemaImport: () => editSchemaPath,

115-127: Add explicit return types to arrow functions.

According to the coding guidelines, all functions should have explicit return types.

Apply this diff to add return types:

            adminCrudEdit: {
-             getSchemaPath: () => editSchemaPath,
-             getSchemaImport: () => editSchemaPath,
+             getSchemaPath: (): string => editSchemaPath,
+             getSchemaImport: (): string => editSchemaPath,
            },
            adminCrudInputContainer: {
-             addInput: (input) => {
+             addInput: (input: AdminCrudInput): void => {
                inputFields.push(input);
              },
-             getModelName: () => modelName,
-             isInModal: () => false,
+             getModelName: (): string => modelName,
+             isInModal: (): boolean => false,
packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts (1)

26-47: Add explicit return type to run function.

According to the coding guidelines, all functions should have explicit return types.

Add the return type annotation to the run function:

-     run({ renderers, reactRoutes, reactRouter }) {
+     run({ renderers, reactRoutes, reactRouter }): { build: (builder: any) => Promise<void> } {

Note: Replace any with the proper builder type from the sync package.

packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (1)

55-95: Add explicit return type to run function.

According to the coding guidelines, all functions should have explicit return types.

Add the return type annotation:

-     run({
+     run({
        typescriptFile,
        reactComponentsImports,
        reactConfigImports,
        reactErrorImports,
        reactApollo,
        generatedGraphqlImports,
        paths,
        reactRoutes,
-     }) {
+     }): { build: (builder: any) => Promise<void> } {

Note: Replace any with the proper builder type from the sync package.

🧹 Nitpick comments (5)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1)

9-13: Export the result interface for reuse.
Per the guidelines, non-local interfaces should be exported.

-interface UseCurrentUserResult {
+export interface UseCurrentUserResult {
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (1)

15-24: Improve error type checking robustness.

The error type checking could be more robust by using proper type guards and avoiding 'error' in error checks on Error objects.

 function isInvalidRoleError(error: unknown): boolean {
-  return (
-    error instanceof Error &&
-    'error' in error &&
-    'error_description' in error &&
-    typeof error.error_description === 'string' &&
-    error.error === 'access_denied' &&
-    error.error_description.includes('INVALID_ROLE')
-  );
+  return (
+    error instanceof Error &&
+    'error' in error &&
+    'error_description' in error &&
+    typeof (error as any).error_description === 'string' &&
+    (error as any).error === 'access_denied' &&
+    (error as any).error_description.includes('INVALID_ROLE')
+  );
 }
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)

1-1: Consider removing @ts-nocheck once template variables are resolved.

While @ts-nocheck is acceptable for template files, ensure it's removed when the template is processed and variables are replaced.

plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (1)

98-112: Consider making auth URLs configurable.

The hard-coded login paths might need to be configurable for different routing structures.

Consider accepting route paths as configuration options or deriving them from a routes provider:

-reactAuth: createGeneratorTask({
+reactAuth: createGeneratorTask({
+  dependencies: {
+    reactRoutes: reactRoutesProvider,
+  },
   exports: {
     reactAuth: reactAuthProvider.export(packageScope),
   },
-  run() {
+  run({ reactRoutes }) {
+    const routePrefix = reactRoutes.getRoutePrefix();
     return {
       providers: {
         reactAuth: {
-          getLoginUrlPath: () => '/auth/login',
-          getRegisterUrlPath: () => '/auth/login?screen_hint=signup',
+          getLoginUrlPath: () => `${routePrefix}/auth/login`,
+          getRegisterUrlPath: () => `${routePrefix}/auth/login?screen_hint=signup`,
         },
       },
     };
   },
 }),
packages/react-generators/src/generators/core/react-router/react-router.generator.ts (1)

85-87: Add explicit return type to provider creation.

-export const reactRouterProvider =
-  createProviderType<ReactRouterProvider>('react-router');
+export const reactRouterProvider: ReturnType<typeof createProviderType<ReactRouterProvider>> =
+  createProviderType<ReactRouterProvider>('react-router');
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e092c91 and 6c1d20e.

⛔ Files ignored due to path filters (35)
  • packages/react-generators/src/generators/admin/admin-bull-board/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-bull-board/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-crud-edit/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-crud-list/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-home/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-home/generated/template-renderers.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-home/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-layout/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-layout/generated/template-renderers.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/admin/admin-layout/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/apollo/react-apollo/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/apollo/react-apollo/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-components/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-components/generated/ts-import-providers.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-components/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-router/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-router/generated/template-renderers.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-router/generated/ts-import-providers.ts is excluded by !**/generated/**, !**/generated/**
  • packages/react-generators/src/generators/core/react-router/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/index.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/template-renderers.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/index.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/template-renderers.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/index.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/template-renderers.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-storage/src/generators/react/upload-components/generated/template-paths.ts is excluded by !**/generated/**, !**/generated/**
  • plugins/plugin-storage/src/generators/react/upload-components/generated/typed-templates.ts is excluded by !**/generated/**, !**/generated/**
📒 Files selected for processing (72)
  • .changeset/hot-tires-check.md (1 hunks)
  • .changeset/two-rockets-tell.md (1 hunks)
  • .vscode/settings.json (1 hunks)
  • packages/core-generators/src/generators/node/eslint/react-rules.ts (1 hunks)
  • packages/project-builder-server/src/compiler/admin/index.ts (3 hunks)
  • packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (5 hunks)
  • packages/react-generators/src/generators/admin/admin-bull-board/extractor.json (1 hunks)
  • packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx (2 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (5 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json (2 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (2 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (2 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (2 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-list/extractor.json (1 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (2 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts (1 hunks)
  • packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts (2 hunks)
  • packages/react-generators/src/generators/admin/admin-home/extractor.json (2 hunks)
  • packages/react-generators/src/generators/admin/admin-home/index.ts (1 hunks)
  • packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1 hunks)
  • packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (2 hunks)
  • packages/react-generators/src/generators/admin/admin-layout/extractor.json (1 hunks)
  • packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1 hunks)
  • packages/react-generators/src/generators/apollo/react-apollo/extractor.json (1 hunks)
  • packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts (3 hunks)
  • packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (1 hunks)
  • packages/react-generators/src/generators/auth/_providers/index.ts (1 hunks)
  • packages/react-generators/src/generators/auth/_providers/react-auth.ts (1 hunks)
  • packages/react-generators/src/generators/auth/_tasks/auth-context.ts (1 hunks)
  • packages/react-generators/src/generators/auth/_tasks/index.ts (1 hunks)
  • packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts (2 hunks)
  • packages/react-generators/src/generators/auth/index.ts (1 hunks)
  • packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts (1 hunks)
  • packages/react-generators/src/generators/core/react-components/extractor.json (1 hunks)
  • packages/react-generators/src/generators/core/react-components/templates/src/hooks/useStatus.ts (0 hunks)
  • packages/react-generators/src/generators/core/react-router/extractor.json (3 hunks)
  • packages/react-generators/src/generators/core/react-router/react-router.generator.ts (6 hunks)
  • packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx (1 hunks)
  • packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx (3 hunks)
  • packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts (1 hunks)
  • packages/react-generators/src/providers/providers.json (1 hunks)
  • packages/react-generators/src/providers/routes.ts (1 hunks)
  • packages/sync/src/output/clean-deleted-files.ts (3 hunks)
  • packages/sync/src/output/clean-deleted-files.unit.test.ts (2 hunks)
  • packages/sync/src/utils/directories.ts (1 hunks)
  • packages/sync/src/utils/directories.unit.test.ts (1 hunks)
  • plugins/plugin-auth/src/auth0/core/node.ts (3 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/auth0-callback.generator.ts (0 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/extractor.json (0 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/index.ts (0 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/auth0-callback.tsx (0 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/signup.tsx (0 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json (3 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts (2 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/index.ts (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json (1 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (3 hunks)
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (1 hunks)
  • plugins/plugin-storage/src/generators/react/upload-components/extractor.json (1 hunks)
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (1 hunks)
💤 Files with no reviewable changes (6)
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/index.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/extractor.json
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/auth0-callback.tsx
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/signup.tsx
  • packages/react-generators/src/generators/core/react-components/templates/src/hooks/useStatus.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-callback/auth0-callback.generator.ts
🧰 Additional context used
📓 Path-based instructions (14)
`**/*.{ts,tsx}`: TypeScript with strict type checking Node 16 module resolution ...

**/*.{ts,tsx}: TypeScript with strict type checking
Node 16 module resolution - include file extensions in imports (.js)
Sort imports by group: external libs first, then local imports
Use camelCase for variables/functions, PascalCase for types/classes
Always include return types on top-level functions including React components (React.ReactElement)
Include absolute paths in import statements via tsconfig paths (@src/ is the alias for src/)
Order functions such that functions are placed below the variables/functions they use
If a particular interface or type is not exported, change the file so it is exported
Prefer using nullish coalescing operator (??) instead of logical or (||)
Use console.info/warn/error instead of console.log
Always use .js extensions in imports, even for TypeScript files
Specify explicit return types on all functions

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts
  • packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts
  • packages/react-generators/src/generators/auth/_providers/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts
  • packages/react-generators/src/generators/auth/_tasks/auth-context.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx
  • packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx
  • packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx
  • packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx
  • packages/project-builder-server/src/compiler/admin/index.ts
  • packages/react-generators/src/generators/auth/_tasks/index.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx
  • packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx
  • packages/react-generators/src/generators/auth/_providers/react-auth.ts
  • packages/react-generators/src/generators/admin/admin-home/index.ts
  • packages/react-generators/src/generators/auth/index.ts
  • packages/sync/src/utils/directories.unit.test.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts
  • packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx
  • packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts
  • packages/core-generators/src/generators/node/eslint/react-rules.ts
  • packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx
  • packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts
  • plugins/plugin-auth/src/auth0/core/node.ts
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx
  • packages/react-generators/src/providers/routes.ts
  • packages/sync/src/utils/directories.ts
  • packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts
  • packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
  • packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx
  • packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx
  • plugins/plugin-auth/src/auth0/generators/react/index.ts
  • packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts
  • packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx
  • packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx
  • packages/react-generators/src/generators/core/react-router/react-router.generator.ts
`**/*`: Use kebab-case for file names

**/*: Use kebab-case for file names

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts
  • packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts
  • packages/react-generators/src/generators/admin/admin-crud-list/extractor.json
  • packages/react-generators/src/generators/auth/_providers/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts
  • plugins/plugin-storage/src/generators/react/upload-components/extractor.json
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts
  • packages/react-generators/src/generators/auth/_tasks/auth-context.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx
  • packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx
  • packages/react-generators/src/generators/admin/admin-bull-board/extractor.json
  • packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx
  • packages/react-generators/src/generators/apollo/react-apollo/extractor.json
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json
  • packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx
  • packages/project-builder-server/src/compiler/admin/index.ts
  • packages/react-generators/src/generators/auth/_tasks/index.ts
  • packages/react-generators/src/providers/providers.json
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx
  • packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx
  • packages/react-generators/src/generators/auth/_providers/react-auth.ts
  • packages/react-generators/src/generators/admin/admin-home/extractor.json
  • packages/react-generators/src/generators/admin/admin-home/index.ts
  • packages/react-generators/src/generators/auth/index.ts
  • packages/sync/src/utils/directories.unit.test.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts
  • packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx
  • packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts
  • packages/core-generators/src/generators/node/eslint/react-rules.ts
  • packages/react-generators/src/generators/admin/admin-layout/extractor.json
  • packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx
  • packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts
  • plugins/plugin-auth/src/auth0/core/node.ts
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx
  • packages/react-generators/src/generators/core/react-components/extractor.json
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx
  • packages/react-generators/src/providers/routes.ts
  • packages/sync/src/utils/directories.ts
  • packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts
  • packages/react-generators/src/generators/core/react-router/extractor.json
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts
  • packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
  • packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx
  • packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json
  • plugins/plugin-auth/src/auth0/generators/react/index.ts
  • packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts
  • packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx
  • packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx
  • packages/react-generators/src/generators/core/react-router/react-router.generator.ts
`{packages,plugins}/**/*.{ts,tsx}`: Use TypeScript with strict type checking ena...

{packages,plugins}/**/*.{ts,tsx}: Use TypeScript with strict type checking enabled
All functions (excluding one-liner arrow functions) require explicit return types
Use camelCase for variables and functions
Use PascalCase for types and classes
Prefer functional programming patterns
Extract repeated components into distinct functions or components where applicable

📄 Source: CodeRabbit Inference Engine (.cursor/rules/code-style.mdc)

List of files the instruction was applied to:

  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts
  • packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts
  • packages/react-generators/src/generators/auth/_providers/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts
  • packages/react-generators/src/generators/auth/_tasks/auth-context.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx
  • packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx
  • packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx
  • packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx
  • packages/project-builder-server/src/compiler/admin/index.ts
  • packages/react-generators/src/generators/auth/_tasks/index.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx
  • packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx
  • packages/react-generators/src/generators/auth/_providers/react-auth.ts
  • packages/react-generators/src/generators/admin/admin-home/index.ts
  • packages/react-generators/src/generators/auth/index.ts
  • packages/sync/src/utils/directories.unit.test.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts
  • packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx
  • packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts
  • packages/core-generators/src/generators/node/eslint/react-rules.ts
  • packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx
  • packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts
  • plugins/plugin-auth/src/auth0/core/node.ts
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx
  • packages/react-generators/src/providers/routes.ts
  • packages/sync/src/utils/directories.ts
  • packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts
  • packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
  • packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx
  • packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx
  • plugins/plugin-auth/src/auth0/generators/react/index.ts
  • packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts
  • packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx
  • packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx
  • packages/react-generators/src/generators/core/react-router/react-router.generator.ts
`**/*.tsx`: Use ShadCN-based components from `@baseplate-dev/ui-components` inst...

**/*.tsx: Use ShadCN-based components from @baseplate-dev/ui-components instead of creating custom ones
Use Tailwind CSS utilities exclusively for styling; avoid writing custom CSS classes
Use icons from react-icons/md (Material Design icons); avoid using other icon libraries

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx
  • packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx
  • packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx
  • packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx
  • packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx
  • packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx
  • packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
  • packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx
  • packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx
  • packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx
  • packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx
`.changeset/*.md`: If you are adding a new feature or changing an existing feature, add a new Changeset in the `.changeset/` directory

.changeset/*.md: If you are adding a new feature or changing an existing feature, add a new Changeset in the .changeset/ directory

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • .changeset/hot-tires-check.md
  • .changeset/two-rockets-tell.md
`**/index.{ts,tsx}`: Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports

**/index.{ts,tsx}: Prefer barrel exports e.g. export * from './foo.js' instead of individual named exports

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • packages/react-generators/src/generators/auth/_providers/index.ts
  • packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx
  • packages/project-builder-server/src/compiler/admin/index.ts
  • packages/react-generators/src/generators/auth/_tasks/index.ts
  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts
  • packages/react-generators/src/generators/admin/admin-home/index.ts
  • packages/react-generators/src/generators/auth/index.ts
  • packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx
  • plugins/plugin-auth/src/auth0/generators/react/index.ts
  • packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx
`**/*.{unit,int}.test.ts`: Unit tests use `.unit.test.ts` suffix, integration te...

**/*.{unit,int}.test.ts: Unit tests use .unit.test.ts suffix, integration tests use .int.test.ts
Collocate tests with source files using .unit.test.ts or .int.test.ts suffixes

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • packages/sync/src/utils/directories.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
`**/*.test.ts`: Always import vitest globals explicitly (describe, it, expect) U...

**/*.test.ts: Always import vitest globals explicitly (describe, it, expect)
Use descriptive test names that explain what is being tested
Structure tests with clear setup, execution, and verification phases (Arrange-Act-Assert)
Always mock external API calls and file system operations in tests
Extract common setup code into test helpers
Include tests for error conditions and edge cases
Each test should be independent and not rely on others
Always reset mocks and clean up resources in afterEach
Leverage TypeScript for type-safe mocking in tests
Focus on testing public methods and behaviors, not implementation details
Each test should verify one specific behavior
Import test functions from 'vitest' (no globals)

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • packages/sync/src/utils/directories.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
`{packages,plugins}/**/*.unit.test.ts`: Unit tests use `.unit.test.ts` suffix

{packages,plugins}/**/*.unit.test.ts: Unit tests use .unit.test.ts suffix

📄 Source: CodeRabbit Inference Engine (.cursor/rules/code-style.mdc)

List of files the instruction was applied to:

  • packages/sync/src/utils/directories.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
`{packages,plugins}/**/*.{unit,int}.test.ts`: Always import vitest globals explicitly (describe, it, expect)

{packages,plugins}/**/*.{unit,int}.test.ts: Always import vitest globals explicitly (describe, it, expect)

📄 Source: CodeRabbit Inference Engine (.cursor/rules/code-style.mdc)

List of files the instruction was applied to:

  • packages/sync/src/utils/directories.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
`**/*.unit.test.{ts,tsx}`: Unit tests are colocated with source files using `.unit.test.ts` suffix

**/*.unit.test.{ts,tsx}: Unit tests are colocated with source files using .unit.test.ts suffix

📄 Source: CodeRabbit Inference Engine (.cursor/rules/tests.mdc)

List of files the instruction was applied to:

  • packages/sync/src/utils/directories.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
`**/*.test.{ts,tsx}`: For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock

**/*.test.{ts,tsx}: For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock

📄 Source: CodeRabbit Inference Engine (.cursor/rules/tests.mdc)

List of files the instruction was applied to:

  • packages/sync/src/utils/directories.unit.test.ts
  • packages/sync/src/output/clean-deleted-files.unit.test.ts
`plugins/*/**/*.tsx`: In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)

plugins/*/**/*.tsx: In plugins, prefix all Tailwind classes with the plugin name (e.g., auth-, storage-)

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
`plugins/plugin-*/**/*.tsx`: All CSS classes used in `className` attributes with...

plugins/plugin-*/**/*.tsx: All CSS classes used in className attributes within plugin components MUST be prefixed with the plugin name to avoid style conflicts.
When using utility functions like cn(), all CSS classes passed to cn() in plugin components MUST be prefixed with the plugin name.

📄 Source: CodeRabbit Inference Engine (plugins/CLAUDE.md)

List of files the instruction was applied to:

  • plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx
  • plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx
  • plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
🧠 Learnings (64)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
.changeset/hot-tires-check.md (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to .changeset/*.md : If you are adding a new feature or changing an existing feature, add a new Changeset in the `.changeset/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:70-79
Timestamp: 2025-05-08T12:56:11.723Z
Learning: In the check-changesets.ts script for monorepo validation, `npm pack ${pkg.name}@latest` is intentionally used to pack the most recently published version (not local changes) for comparison purposes to determine if changes require new changesets.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Prefer using nullish coalescing operator (`??`) instead of logical or (`||`)
packages/react-generators/src/generators/admin/admin-crud-list/extractor.json (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/auth/_providers/index.ts (13)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: kingston
PR: halfdomelabs/baseplate#544
File: packages/ui-components/src/components/Command/Command.tsx:16-31
Timestamp: 2025-05-12T08:29:52.819Z
Learning: In React 19, function components automatically receive refs as regular props, eliminating the need for React.forwardRef. This allows components to directly destructure and use the ref prop, simplifying component definitions while maintaining the same ref forwarding functionality.
packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
plugins/plugin-storage/src/generators/react/upload-components/extractor.json (17)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/* : Use kebab-case for file names
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
.vscode/settings.json (13)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: kingston
PR: halfdomelabs/baseplate#562
File: plugins/plugin-auth/package.json:32-36
Timestamp: 2025-06-03T09:11:29.651Z
Learning: With TypeScript project references, TypeScript compilation is watched from the root level using "watch:tsc:root" script, so individual packages no longer need to include their "tsc:watch" scripts in their local "watch" commands. The local "tsc:watch" scripts are renamed from "watch:tsc" but are not meant to be run as part of the package's watch command since TypeScript watching is handled centrally at the workspace root.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.test.{ts,tsx} : For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
packages/react-generators/src/generators/auth/_tasks/auth-context.ts (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (6)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (4)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/admin/admin-bull-board/extractor.json (6)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/apollo/react-apollo/extractor.json (16)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json (19)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/* : Use kebab-case for file names
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
packages/project-builder-server/src/compiler/admin/index.ts (4)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/auth/_tasks/index.ts (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
packages/react-generators/src/providers/providers.json (7)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
.changeset/two-rockets-tell.md (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:70-79
Timestamp: 2025-05-08T12:56:11.723Z
Learning: In the check-changesets.ts script for monorepo validation, `npm pack ${pkg.name}@latest` is intentionally used to pack the most recently published version (not local changes) for comparison purposes to determine if changes require new changesets.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts (12)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (6)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use console.info/warn/error instead of console.log
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
packages/react-generators/src/generators/admin/admin-home/extractor.json (16)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
packages/react-generators/src/generators/admin/admin-home/index.ts (11)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Sort imports by group: external libs first, then local imports
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
packages/react-generators/src/generators/auth/index.ts (14)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Import test functions from 'vitest' (no globals)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
packages/sync/src/utils/directories.unit.test.ts (14)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Each test should be independent and not rely on others
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{unit,int}.test.ts : Collocate tests with source files using `.unit.test.ts` or `.int.test.ts` suffixes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Colocate tests with implementation files, e.g. for `./utils.ts`, add the test to `./utils.unit.test.ts`
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Structure tests with clear setup, execution, and verification phases (Arrange-Act-Assert)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Use descriptive test names that explain what is being tested
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Each test should verify one specific behavior
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: When testing file operations in this codebase, the pattern is to use Vitest automocks for 'node:fs' and 'node:fs/promises' (without explicit implementation replacement) while populating a virtual filesystem with vol.fromJSON() from memfs. File operations in tests are performed directly via vol.promises methods.
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In this codebase, when testing file operations, Vitest's automocks for 'node:fs' and 'node:fs/promises' are used in conjunction with memfs, but without replacing the mock implementation explicitly in each test file. The virtual filesystem is populated using vol.fromJSON or similar methods, which works seamlessly with the automocks.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.test.{ts,tsx} : For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In the project-builder-server test suite, Vitest automocks for 'node:fs' and 'node:fs/promises' are already configured to use memfs without needing explicit implementation replacement in each test file.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts (5)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
packages/sync/src/output/clean-deleted-files.unit.test.ts (16)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.test.{ts,tsx} : For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Always mock external API calls and file system operations in tests
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Always reset mocks and clean up resources in afterEach
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{unit,int}.test.ts : Collocate tests with source files using `.unit.test.ts` or `.int.test.ts` suffixes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Each test should be independent and not rely on others
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{unit,int}.test.ts : Unit tests use `.unit.test.ts` suffix, integration tests use `.int.test.ts`
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Leverage TypeScript for type-safe mocking in tests
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: When testing file operations in this codebase, the pattern is to use Vitest automocks for 'node:fs' and 'node:fs/promises' (without explicit implementation replacement) while populating a virtual filesystem with vol.fromJSON() from memfs. File operations in tests are performed directly via vol.promises methods.
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In this codebase, when testing file operations, Vitest's automocks for 'node:fs' and 'node:fs/promises' are used in conjunction with memfs, but without replacing the mock implementation explicitly in each test file. The virtual filesystem is populated using vol.fromJSON or similar methods, which works seamlessly with the automocks.
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In the project-builder-server test suite, Vitest automocks for 'node:fs' and 'node:fs/promises' are already configured to use memfs without needing explicit implementation replacement in each test file.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Import test functions from 'vitest' (no globals)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
packages/sync/src/output/clean-deleted-files.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts (2)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (9)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/core-generators/src/generators/node/eslint/react-rules.ts (15)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Include tests for error conditions and edge cases
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Specify explicit return types on all functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/* : Use kebab-case for file names
packages/react-generators/src/generators/admin/admin-layout/extractor.json (10)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx (8)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (6)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 20.12.0 and above include `globSync` in the core `node:fs` module, so `import { promises as fs, globSync } from 'node:fs';` is valid syntax in projects using these Node.js versions.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
plugins/plugin-auth/src/auth0/core/node.ts (7)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
packages/react-generators/src/generators/core/react-components/extractor.json (16)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
packages/react-generators/src/providers/routes.ts (9)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/sync/src/utils/directories.ts (4)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Order functions such that functions are placed below the variables/functions they use
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Sort imports by group: external libs first, then local imports
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (11)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
packages/react-generators/src/generators/core/react-router/extractor.json (15)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#562
File: plugins/plugin-auth/package.json:32-36
Timestamp: 2025-06-03T09:11:29.651Z
Learning: With TypeScript project references, TypeScript compilation is watched from the root level using "watch:tsc:root" script, so individual packages no longer need to include their "tsc:watch" scripts in their local "watch" commands. The local "tsc:watch" scripts are renamed from "watch:tsc" but are not meant to be run as part of the package's watch command since TypeScript watching is handled centrally at the workspace root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (4)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (3)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts (15)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 20.12.0 and above include `globSync` in the core `node:fs` module, so `import { promises as fs, globSync } from 'node:fs';` is valid syntax in projects using these Node.js versions.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (3)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx (8)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#562
File: plugins/plugin-auth/package.json:32-36
Timestamp: 2025-06-03T09:11:29.651Z
Learning: With TypeScript project references, TypeScript compilation is watched from the root level using "watch:tsc:root" script, so individual packages no longer need to include their "tsc:watch" scripts in their local "watch" commands. The local "tsc:watch" scripts are renamed from "watch:tsc" but are not meant to be run as part of the package's watch command since TypeScript watching is handled centrally at the workspace root.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx (7)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json (11)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
plugins/plugin-auth/src/auth0/generators/react/index.ts (12)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts (13)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (14)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (3)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/core/react-router/react-router.generator.ts (11)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
🧬 Code Graph Analysis (21)
packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (1)
packages/react-generators/src/generators/core/react-components/templates/src/components/alert/alert.tsx (1)
  • AlertTitle (80-80)
packages/react-generators/src/generators/auth/_tasks/auth-context.ts (4)
packages/sync/src/generators/generators.ts (1)
  • createGeneratorTask (196-204)
packages/react-generators/src/generators/core/react-router/react-router.generator.ts (1)
  • reactRouterConfigProvider (79-79)
packages/react-generators/src/generators/auth/_providers/auth-hooks.ts (1)
  • authHooksImportsProvider (18-19)
packages/core-generators/src/renderers/typescript/utils/ts-code-utils.ts (1)
  • tsTemplate (583-583)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
  • Route (7-19)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
  • Route (12-14)
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
  • Route (8-10)
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
  • Route (7-19)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
  • Route (12-14)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
  • Route (8-10)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (2)
packages/ui-components/src/index.ts (1)
  • toast (7-7)
packages/project-builder-web/src/services/error-formatter.ts (1)
  • logAndFormatError (37-40)
packages/project-builder-server/src/compiler/admin/index.ts (1)
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (1)
  • adminLayoutGenerator (35-100)
packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (2)
packages/ui-components/src/index.ts (1)
  • toast (7-7)
packages/project-builder-web/src/services/error-formatter.ts (1)
  • logAndFormatError (37-40)
packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx (1)
packages/react-generators/src/generators/core/react-components/templates/src/components/alert/alert.tsx (3)
  • Alert (80-80)
  • AlertTitle (80-80)
  • AlertDescription (80-80)
packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
packages/sync/src/providers/providers.ts (1)
  • createReadOnlyProviderType (219-224)
packages/sync/src/utils/directories.unit.test.ts (1)
packages/sync/src/utils/directories.ts (1)
  • removeEmptyAncestorDirectories (62-98)
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (2)
packages/sync/src/utils/create-generator.ts (1)
  • createGenerator (96-123)
packages/sync/src/generators/generators.ts (1)
  • createGeneratorTask (196-204)
packages/sync/src/output/clean-deleted-files.ts (1)
packages/sync/src/utils/directories.ts (1)
  • removeEmptyAncestorDirectories (62-98)
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (2)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
  • Route (7-19)
packages/react-generators/src/generators/core/react-components/templates/src/components/loader/loader.tsx (1)
  • Loader (29-29)
packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (3)
packages/react-generators/src/utils/case.ts (1)
  • lowerCaseFirst (3-8)
packages/core-generators/src/renderers/typescript/utils/ts-code-utils.ts (1)
  • TsCodeUtils (85-580)
packages/utils/src/string/quot.ts (1)
  • quot (6-8)
packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (2)
packages/react-generators/src/providers/routes.ts (1)
  • reactRoutesProvider (37-38)
packages/utils/src/string/quot.ts (1)
  • quot (6-8)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
  • Route (7-19)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
  • Route (12-14)
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (3)
packages/react-generators/src/providers/routes.ts (1)
  • reactRoutesProvider (37-38)
packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
  • reactAuthProvider (13-14)
packages/utils/src/string/quot.ts (1)
  • quot (6-8)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
  • Route (7-19)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
  • Route (12-14)
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
  • Route (8-10)
packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (1)
packages/utils/src/string/quot.ts (1)
  • quot (6-8)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
  • Route (7-19)
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
  • Route (9-11)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
  • Route (8-10)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (2)
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (1)
  • Route (7-31)
packages/react-generators/src/generators/admin/admin-layout/templates/src/components/admin-layout/admin-layout.tsx (1)
  • AdminLayout (20-50)
🪛 GitHub Actions: Test
packages/react-generators/src/generators/admin/admin-home/index.ts

[error] 2-2: TypeScript error TS2307: Cannot find module './generated/ts-import-providers.js' or its corresponding type declarations.

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Test E2E
  • GitHub Check: Lint
🔇 Additional comments (88)
.vscode/settings.json (1)

8-19: Consistent exclusion of generated artifacts LGTM

Adding **/baseplate/generated/** to files.readonlyInclude, files.watcherExclude, and search.exclude cleanly shields generated output from accidental edits, unnecessary file watchers, and search results. Pattern syntax is correct and mirrors the existing rule for route-tree.gen.ts. No issues spotted.

packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx (1)

105-112: Addition looks good – autoComplete="off" is accepted by the native input element.

Assuming InputFieldController forwards unknown props to the underlying input, this should effectively disable browser suggestions without side-effects. No further changes required.

.changeset/two-rockets-tell.md (1)

1-6: LGTM: Well-formatted changeset with clear description.

The changeset follows the proper format and clearly describes the fix for the removeEmptyAncestorDirectories function to handle nested directories correctly.

packages/sync/src/utils/directories.unit.test.ts (1)

200-226: Excellent test coverage for the directory cleanup fix.

This test case effectively validates the updated removeEmptyAncestorDirectories function behavior by:

  • Creating a realistic nested directory structure with branching paths
  • Simulating file deletions from multiple branches
  • Verifying that all empty ancestor directories are properly removed in the correct order
  • Confirming the root directory remains intact

The test complements the implementation changes and provides good coverage for the nested directory cleanup scenario.

packages/sync/src/output/clean-deleted-files.ts (3)

52-52: Good addition for tracking renamed/deleted files.

The new renamedOrDeletedPaths array properly separates files that don't exist on disk from those that are actually deleted, enabling appropriate cleanup of empty ancestor directories for both scenarios.


69-72: Improved logic for handling non-existent files.

The updated logic correctly identifies files that don't exist on disk (whether renamed or deleted) and adds them to the appropriate tracking array for directory cleanup. The updated comment clearly explains the purpose.


94-103: Enhanced directory cleanup for comprehensive file management.

The updated call to removeEmptyAncestorDirectories now properly handles both deleted and renamed files, ensuring that empty ancestor directories are cleaned up regardless of whether files were deleted or moved to different locations.

packages/sync/src/output/clean-deleted-files.unit.test.ts (3)

4-4: Proper mock setup for directory cleanup testing.

The import and mock setup for removeEmptyAncestorDirectories follows the established testing patterns in the codebase and enables proper verification of the cleanup behavior.

Also applies to: 13-15


23-23: Good mock cleanup practice.

Properly clearing the mock in beforeEach ensures test isolation and prevents test interference.


146-190: Comprehensive test for renamed file cleanup behavior.

This test case effectively validates the enhanced cleanup logic by:

  • Setting up a realistic scenario with renamed files that no longer exist at their previous paths
  • Verifying that no files are incorrectly deleted or marked for pending deletion
  • Confirming that removeEmptyAncestorDirectories is called with the correct old file paths and options
  • Following the Arrange-Act-Assert pattern clearly

The test provides good coverage for the renamed file cleanup scenario and validates the integration between cleanDeletedFiles and removeEmptyAncestorDirectories.

packages/sync/src/utils/directories.ts (1)

72-76: Excellent fix for nested directory handling.

The sorting logic correctly addresses the nested directory cleanup issue by processing directories from deepest to shallowest. This ensures that:

  • Deeper directories are removed before their ancestors
  • No conflicts occur when removing nested structures
  • The cleanup process is more reliable and predictable

The variable naming update from uniqueParentDirs to sortedParentDirs clearly reflects the new behavior.

plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts (1)

3-3: Import path & extension now conform to project standards – good catch.
The switch to kebab-case plus the explicit “.js” extension satisfies both the file-naming and Node-16 resolution rules.

plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1)

7-7: Path rename looks correct.
Matches the new kebab-case convention and keeps the “.js” extension. 👍

plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (1)

17-17: Import updated correctly.
Kebab-case + “.js” extension align with the new conventions.

packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (2)

8-8: Additional AlertTitle import is correct and keeps import grouping intact.


51-54: Nice UX improvement – explicit title clarifies the empty-state alert.

plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts (1)

1-1: Barrel export conforms to index-file guideline.
Relative path and “.js” extension are both correct.

.changeset/hot-tires-check.md (1)

1-7: LGTM! Changeset correctly documents the changes.

The changeset properly specifies patch updates for both affected packages and provides a clear description of the improvements to auth generators for TanStack Router integration.

packages/react-generators/src/generators/auth/_tasks/index.ts (1)

1-1: LGTM! Correct barrel export pattern.

The export statement follows the established pattern for index files and includes the required .js extension.

plugins/plugin-storage/src/generators/react/upload-components/extractor.json (1)

52-58: LGTM! Correct kebab-case naming convention.

The renaming from useUpload.ts to use-upload.ts correctly follows the kebab-case file naming convention, with both the key and pathRootRelativePath consistently updated.

packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts (1)

321-321: LGTM! Consistent path resolution method update.

The change from getDirectoryBase() to getOutputRelativePath() aligns with the broader refactoring of route path handling across admin generators, providing more descriptive method naming.

packages/react-generators/src/generators/auth/_providers/index.ts (1)

3-3: LGTM! Correct barrel export addition.

The new export statement follows the established barrel export pattern and includes the required .js extension, consistently extending the public API.

packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)

9-9: LGTM! Route path variable standardization implemented correctly.

This change aligns with the broader refactoring effort to standardize route path handling across admin generators. The use of TPL_ROUTE_PATH instead of hardcoded '/' provides better flexibility and consistency.

plugins/plugin-auth/src/auth0/generators/react/index.ts (1)

4-4: LGTM! Auth0 generator export updated correctly.

The replacement of auth0-callback with auth0-pages export aligns with the broader refactoring to modernize Auth0 authentication handling. The barrel export pattern is properly maintained.

packages/react-generators/src/generators/admin/admin-crud-list/extractor.json (1)

28-28: LGTM! Variable name standardized correctly.

The change from TPL_ROUTE_VALUE to TPL_ROUTE_PATH improves clarity and consistency across admin generators. This aligns with the broader effort to standardize route path handling.

packages/react-generators/src/generators/admin/admin-bull-board/extractor.json (1)

35-35: LGTM! Dynamic route path variable added correctly.

The addition of TPL_ROUTE_PATH variable enables flexible route path configuration for the bull board generator, consistent with the broader refactoring effort across admin generators.

packages/react-generators/src/providers/providers.json (1)

8-8: LGTM! Path resolution method updated correctly.

The change from getDirectoryBase to getOutputRelativePath improves path resolution capabilities and aligns with the broader refactoring effort across multiple generators to enhance route and file path handling.

packages/react-generators/src/generators/auth/index.ts (1)

2-2: LGTM! Proper barrel export addition.

The addition follows the established pattern and correctly uses the .js extension as required by the coding guidelines for TypeScript imports.

packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts (1)

4-4: Good type consistency improvement.

Changing from string | null to string | undefined is more idiomatic in TypeScript and aligns with how optional values are typically handled in React Router contexts.

packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx (2)

8-9: Good import additions for enhanced alert components.

Adding AlertDescription and AlertTitle imports supports the improved empty state UI structure below.


112-115: Excellent UI improvement for empty state messaging.

The structured alert with separate title and description provides clearer user guidance compared to the previous simple text alert. This follows ShadCN component patterns and enhances the user experience.

packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)

12-12: Good refactoring to use template variable for route path.

Replacing the hardcoded '/bull-board/' with TPL_ROUTE_PATH improves maintainability and consistency across admin generators. This aligns with the pattern used in other admin route templates.

packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)

9-9: Good template variable naming standardization.

Renaming from TPL_ROUTE_VALUE to TPL_ROUTE_PATH improves consistency across admin generators and makes the variable purpose clearer. This aligns with the naming pattern used in other admin route templates.

plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts (2)

7-7: LGTM: Type change aligns with JavaScript semantics.

The change from string | null to string | undefined is appropriate since accessing a non-existent property on an object returns undefined, not null.


17-17: LGTM: Consistent type casting with the interface change.

The direct casting to string | undefined is consistent with the updated SessionData interface and follows JavaScript's natural behavior for undefined properties.

packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx (2)

5-9: LGTM: Clean redirect implementation.

The route implementation correctly uses TanStack Router's redirect functionality to forward root path traffic to the admin section.


3-3: Add file extensions to imports.

The coding guidelines require "Always use .js extensions in imports, even for TypeScript files" for **/*.{ts,tsx} files.

-import { createFileRoute, redirect } from '@tanstack/react-router';
+import { createFileRoute, redirect } from '@tanstack/react-router';

Note: External library imports don't need file extensions, but local imports would need them.

packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)

9-9: LGTM: Template variable standardization.

The change from TPL_ROUTE_VALUE to TPL_ROUTE_PATH is consistent with the standardization across admin generators as seen in the relevant snippets from admin-crud-edit/templates/create.tsx, admin-crud-list/templates/index.tsx, and other admin generator templates.

packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (2)

8-8: Add file extension to local import.

The coding guidelines require "Always use .js extensions in imports, even for TypeScript files" for **/*.{ts,tsx} files.

-import { createApolloClient } from '../services/apollo/index.js';
+import { createApolloClient } from '../services/apollo/index.js';

Wait, the import already has the .js extension. This is correct.


14-14: LGTM: Named export change improves consistency.

The change from default export to named export is consistent with modern practices and aligns with the updated import patterns mentioned in the AI summary.

packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)

8-8: LGTM: Template variable standardization.

The change from TPL_ROUTE_VALUE to TPL_ROUTE_PATH is consistent with the standardization across admin generators as shown in the relevant snippets from admin-home/templates/routes/index.tsx, admin-bull-board/templates/routes/bull-board/index.tsx, and other admin templates.

plugins/plugin-auth/src/auth0/core/node.ts (3)

28-28: LGTM - Auth0 pages generator import added correctly.

The import addition aligns with the refactoring from callback-based to page-based Auth0 integration.


85-85: LGTM - Consistent migration to auth0PagesGenerator.

The replacement of auth0CallbackGenerator with auth0PagesGenerator is consistent across both web and admin app compilers, maintaining the same structure and empty configuration.

Also applies to: 104-104


77-77: Confirmed removal of callbackPath – no occurrences found

I ran rg -n "callbackPath" -g '*.ts*' across the repo and found zero references. Please verify that your new auth0PagesGenerator correctly handles the callback routing (e.g., redirect path after login) and test the full authentication flow.

• File: plugins/plugin-auth/src/auth0/core/node.ts, line 77 (reactAuth0Generator({}))

packages/project-builder-server/src/compiler/admin/index.ts (3)

51-56: LGTM - Consistent admin route path prefixing.

The admin section paths are now consistently prefixed with /admin/, which aligns with the routing standardization objectives.


81-81: LGTM - Route name standardization.

The route name change from '_admin' to 'admin' removes the underscore prefix, making it more consistent with standard naming conventions.


89-89: LGTM - Navigation links updated consistently.

Both the home link and bull-board link are now properly prefixed with /admin, maintaining consistency with the route structure changes.

Also applies to: 98-98

packages/react-generators/src/generators/admin/admin-layout/extractor.json (2)

12-12: LGTM - Template variables added for routing integration.

The addition of TPL_LOGIN_URL_PATH and TPL_ROUTE_PATH variables supports the new TanStack Router integration and authentication flow.


9-9: authComponentsImportsProvider Removal Verified

The routes/route.tsx template under admin-layout has no references to authentication hooks or components—our search for auth in
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx returned no hits. Since it only relies on the new TPL_LOGIN_URL_PATH and TPL_ROUTE_PATH variables, removing authComponentsImportsProvider is intentional and safe. No further changes required.

packages/core-generators/src/generators/node/eslint/react-rules.ts (1)

32-38: LGTM - ESLint rule supports TanStack Router error handling.

The addition of NotFoundError and Redirect to the allowed exceptions aligns with TanStack Router patterns where these specific error types are used for navigation and error handling.

plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json (1)

12-12: LGTM - Consistent file naming convention update.

The standardization from camelCase to kebab-case for hook file names aligns with the coding guidelines that specify kebab-case for file names. The changes are applied consistently across all hook files.

Also applies to: 16-16, 21-21, 33-33, 37-37, 49-49, 53-53, 60-60, 64-64, 71-71

packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (2)

5-10: LGTM: Clean simplification of error handling

The import changes correctly replace the internal status management with toast notifications from the sonner library. This is a cleaner approach that eliminates the need for local error state management.


28-37: LGTM: Improved error handling with toast notifications

The error handling in the onSubmit function is now more streamlined. Using toast.error(logAndFormatError(err)) directly is cleaner than managing local error state and rendering alert components.

packages/react-generators/src/generators/core/react-components/extractor.json (1)

183-184: LGTM: Adding granular alert components for better UI structure

The addition of AlertDescription and AlertTitle exports provides better granular control over alert components, which aligns with the broader UI improvements in admin templates.

plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (1)

1-28: LGTM: Well-structured Auth0 pages generator

The generator follows the established patterns in the codebase:

  • Correct use of createGenerator with proper configuration
  • Appropriate empty descriptor schema using zod
  • Well-structured task dependencies and async build process
  • Proper imports and exports

The replacement of the callback generator with this pages generator appears to be a good architectural improvement for Auth0 integration.

packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts (2)

30-30: LGTM: Improved method naming for clarity

The change from getDirectoryBase() to getOutputRelativePath() makes the method's purpose more explicit and clear.


38-44: LGTM: Enhanced route provider with better separation of concerns

The provider now offers more specific methods:

  • getOutputRelativePath() for directory paths
  • getRouteFilePath() for route file paths

This separation provides better clarity and allows generators to use the most appropriate method for their needs.

packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (1)

5-29: Toast notification implementation looks good.

The migration from Alert component and useStatus hook to toast notifications aligns with the broader UI feedback mechanism modernization. The error handling properly logs and formats errors before displaying them.

packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)

1-14: Well-structured provider implementation.

The ReactAuthProvider interface is clearly defined with proper return types and documentation. The use of createReadOnlyProviderType is appropriate for this provider pattern.

packages/react-generators/src/generators/auth/_tasks/auth-context.ts (1)

1-31: Clean auth context integration.

The task properly adds userId to the router context with correct typing and initialization. The use of template literals for code generation is appropriate.

packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (1)

62-67: Correct route path handling updates.

The migration from getDirectoryBase() to getOutputRelativePath() and the introduction of getRouteFilePath() align with the updated reactRoutes provider interface. The template variable rename from TPL_ROUTE_VALUE to TPL_ROUTE_PATH maintains consistency across generators.

Also applies to: 133-133

packages/react-generators/src/generators/apollo/react-apollo/extractor.json (1)

20-20: LGTM! Naming convention alignment.

The template key and path have been correctly updated to use kebab-case (app-apollo-provider), which aligns with the coding guidelines specifying kebab-case for file names.

Also applies to: 26-26

packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (2)

3-3: LGTM! Proper imports and dependencies.

The new imports for quot, reactAuthProvider, and reactRoutesProvider are correctly structured and align with the refactor to enhance route path handling and authentication integration.

Also applies to: 6-6, 8-8


45-58: LGTM! Enhanced route and auth integration.

The addition of reactRoutes and reactAuth dependencies with corresponding template variables (TPL_ROUTE_PATH and TPL_LOGIN_URL_PATH) properly integrates route path resolution and authentication URL handling. The use of quot() ensures proper string literal quoting.

plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (1)

48-78: LGTM! Well-structured component logic.

The component effectively manages Auth0 loading states, error handling, and conditional rendering. The use of useEffect for error logging and the structured error display are well-implemented.

plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json (1)

1-23: LGTM! Proper generator configuration.

The extractor configuration correctly defines the auth-loaded-gate template with appropriate import map providers for React components and error handling. The singleton file option and path configuration are properly structured.

packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx (1)

3-11: LGTM! Context-aware routing implementation.

The update to use createRootRouteWithContext with the RootRouteContext interface properly implements typed context-aware routing. The template placeholder TPL_ROOT_ROUTE_CONTEXT correctly allows for dynamic context field injection.

packages/react-generators/src/generators/admin/admin-home/extractor.json (2)

4-14: LGTM: New root-index template follows consistent structure.

The new template configuration is well-structured and follows the same pattern as the existing template, with appropriate generator references and empty configurations for importMapProviders and variables.


31-31: LGTM: Variable name aligns with broader refactoring.

The addition of TPL_ROUTE_PATH variable is consistent with the broader refactoring across admin generators to standardize route path variable naming.

packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx (3)

6-6: LGTM: Import simplified to support more flexible router setup.

Removing the RouterProvider import aligns with the template restructuring that uses placeholders for router provider injection.


24-24: LGTM: Additional router options placeholder enhances flexibility.

The TPL_ADDITIONAL_ROUTER_OPTIONS placeholder allows for dynamic injection of router configuration options, improving the template's flexibility.


35-41: LGTM: Template placeholders provide better component composition.

The restructured component body with multiple placeholders (TPL_COMPONENT_SETUP, TPL_ROUTER_CONTEXT, TPL_COMPONENT_BODY, TPL_ROUTER_PROVIDER) enables more granular control over router component composition and context injection.

plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (2)

7-14: LGTM: Well-structured route with proper validation.

The route setup with zod validation is well-implemented. The regex pattern for return_to correctly validates URL paths, and the screen_hint enum validation ensures only valid Auth0 screen hints are accepted.


15-29: LGTM: Proper authentication flow implementation.

The beforeLoad logic correctly handles the authentication flow:

  • Redirects authenticated users to avoid unnecessary login attempts
  • Properly configures Auth0 login with return URL and screen hint
  • Uses globalThis.location.replace for proper redirect handling

This follows the established pattern seen in other authentication routes in the codebase.

plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json (1)

1-20: LGTM: Well-structured extractor configuration.

The extractor configuration follows established patterns:

  • Proper generator reference with correct package path
  • Appropriate import map provider for React components
  • Singleton file configuration suitable for route components
  • Consistent path configuration using {routes-root} placeholder

This aligns with the broader refactoring from auth0-callback to auth0-pages generator.

packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json (1)

28-28: LGTM: Variable name standardization aligns with broader refactoring.

The change from TPL_ROUTE_VALUE to TPL_ROUTE_PATH is consistent with the broader refactoring across admin generators to standardize route path variable naming. This improves consistency and aligns with the updated route path resolution methods in the generator implementations.

Also applies to: 81-81

packages/react-generators/src/providers/routes.ts (1)

19-35: Well-structured interface refactoring for clearer route path semantics.

The separation of route path concerns into three distinct methods with clear documentation improves API clarity and prevents confusion between different path types. This is a good architectural improvement.

packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts (1)

257-281: Clean integration of Apollo Client into router context.

The addition of Apollo Client to the router context follows the established pattern and enables seamless access throughout the routing tree. The non-optional field ensures Apollo Client is always available in routes.

packages/react-generators/src/generators/core/react-router/extractor.json (2)

12-15: LGTM! Root route template variables for context support.

The addition of TPL_ROOT_ROUTE_CONTEXT and TPL_ROOT_ROUTE_OPTIONS variables enables typed context support in the root route template.


26-45: Good refactoring of router template configuration.

The rename from app-routes.tsx to router.tsx is more concise and aligns with the component's purpose. The expanded set of template variables provides better separation of concerns for router setup, context, and provider configuration.

packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)

7-19: Excellent refactor to route-level authentication.

Moving authentication enforcement from a React component wrapper to the route's beforeLoad hook is a cleaner approach that:

  • Prevents unnecessary component rendering for unauthenticated users
  • Handles redirects before any component code executes
  • Properly preserves the return path for post-login navigation
plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (3)

29-29: Clean simplification of descriptor schema.

Removing the callbackPath option in favor of generated constants improves consistency.


61-85: Well-structured Auth0 context integration.

The reactRouterContext task properly integrates Auth0 into the TanStack Router context with:

  • Correct type import from Auth0 SDK
  • Proper setup fragment using useAuth0 hook
  • Non-optional field with appropriate router provider initialization

129-129: Good simplification of redirect URI.

Using globalThis.location.origin removes complexity and is more reliable than conditional path handling.

packages/react-generators/src/generators/core/react-router/react-router.generator.ts (4)

40-60: Well-designed interface for root route context fields.

The RootRouteContextField interface provides a comprehensive structure for defining typed context fields with proper initialization support for both route creation and provider context.


178-190: Excellent validation of context field initializers.

The validation ensures that non-optional fields have at least one initializer, preventing runtime errors.


210-234: Consider performance implications of router invalidation.

The router context implementation correctly memoizes values and invalidates the router on changes. However, frequent context changes could trigger multiple router invalidations.

Consider adding a debounce mechanism if context changes are frequent:

+import { debounce } from 'lodash-es';
+
 const routerContext = useMemo(() => (${TsCodeUtils.mergeFragmentsAsObject(
   routeProviderInitializers,
 )}), [${[...sortedRootContextFields]
   .flatMap((v) => v.routerProviderInitializer?.dependencies ?? [])
   .join(', ')}])

+const invalidateRouter = useMemo(
+  () => debounce(() => router.invalidate().catch(logError), 100),
+  [router]
+);
+
 // Ensure we always have the latest context in the router
 const previousContext = useRef<typeof routerContext>(undefined);
 useEffect(() => {
   if (previousContext.current && previousContext.current !== routerContext) {
-    router.invalidate().catch(logError);
+    invalidateRouter();
   }
   previousContext.current = routerContext;
-}, [routerContext])
+}, [routerContext, invalidateRouter])

151-157: Clean implementation of route provider methods.

The provider methods follow a consistent pattern and properly expose directory and path information.

Comment on lines 1 to 2
// @ts-nocheck

Copy link

@coderabbitai coderabbitai bot Jul 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Remove // @ts-nocheck and add proper typings.
Suppressing type-checking on a 10-line file hides easy-to-fix issues and violates the strict-TS guideline for generators. Consider defining a minimal Session type (or importing one) so that the file compiles without the pragma.

-// @ts-nocheck
+import type { SessionData } from './use-session.js'; // example – adjust path
+
 // With the import above, the rest of the file compiles under strict mode.

🏁 Script executed:

#!/bin/bash
set -e

# Find the hook file
file=$(fd use-required-user-id.ts)

echo "=== File path ==="
echo "$file"
echo

echo "=== First 20 lines ==="
sed -n '1,20p' "$file"
echo

echo "=== Hooks directory contents ==="
ls -R "$(dirname "$file")"
echo

# If a use-session.js file exists, show its exports
session_file=$(dirname "$file")/use-session.js
if [ -f "$session_file" ]; then
  echo "=== use-session.js exports ==="
  sed -n '1,50p' "$session_file" | grep -E 'export '
else
  echo "No use-session.js found in $(dirname "$file")"
fi

Length of output: 1954


🏁 Script executed:

#!/bin/bash
set -e

# Print the first 200 lines of use-session.ts to inspect its exports and typings
sed -n '1,200p' plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts

Length of output: 654


Remove // @ts-nocheck and import the SessionData type
To satisfy strict-TS requirements and get proper typings, drop the nocheck pragma and pull in the SessionData interface from your session hook:

-// @ts-nocheck
+import type { SessionData } from './use-session.js';
 import { useSession } from './use-session.js';

 export function useRequiredUserId(): string {
   const { userId } = useSession();
   if (!userId) {
     throw new Error('User is not authenticated');
   }
   return userId;
 }

This ensures the compiler will validate that userId is correctly typed and guards against accidental breaks in the hook.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// @ts-nocheck
import type { SessionData } from './use-session.js';
import { useSession } from './use-session.js';
export function useRequiredUserId(): string {
const { userId } = useSession();
if (!userId) {
throw new Error('User is not authenticated');
}
return userId;
}
🤖 Prompt for AI Agents
In
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts
at lines 1 to 2, remove the `// @ts-nocheck` directive to enable TypeScript
checking. Then, import the `SessionData` type from the session hook module to
provide proper typings. This will allow the compiler to validate the `userId`
type and prevent type-related errors in the hook.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anything in templates/** can use ts-nocheck because it is a template so therefore not meant to be type checked.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kingston, thank you for that clarification! You're absolutely right - template files are a different case since they're used for code generation rather than being directly compiled. I'll remember this exception going forward.

🐰✨


✏️ Learnings added
Learnt from: kingston
PR: halfdomelabs/baseplate#592
File: plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts:1-2
Timestamp: 2025-07-07T18:24:17.476Z
Learning: Files under templates/** directories can use `// @ts-nocheck` because they are templates meant for code generation, not direct type checking.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


🧠 Learnings used
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Specify explicit return types on all functions

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : All functions (excluding one-liner arrow functions) require explicit return types

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Leverage TypeScript for type-safe mocking in tests

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Include tests for error conditions and edge cases

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes

Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)

Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports

@@ -0,0 +1,9 @@
// @ts-nocheck
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove TypeScript checking suppression.

The // @ts-nocheck directive violates the coding guidelines which require "TypeScript with strict type checking" for **/*.{ts,tsx} files.

-// @ts-nocheck
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// @ts-nocheck
🤖 Prompt for AI Agents
In
packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx
at line 1, remove the `// @ts-nocheck` directive to comply with the coding
guidelines requiring strict TypeScript type checking. After removal, ensure the
file passes all TypeScript checks without suppression.

Comment on lines 2 to 3
export type { AdminHomeImportsProvider } from './generated/ts-import-providers.js';
export { adminHomeImportsProvider } from './generated/ts-import-providers.js';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Fix missing generated file causing TypeScript error

The imports are referencing ./generated/ts-import-providers.js which doesn't exist, causing the TypeScript compilation error. This indicates that either:

  1. The generation process hasn't been run yet, or
  2. The generator configuration is incorrect

Run the following script to verify the file structure and generation process:


🏁 Script executed:

#!/bin/bash
# Description: Check if the generated file exists and verify the generation process

# Check if the generated directory and file exist
echo "Checking for generated directory and file..."
fd -t d "generated" packages/react-generators/src/generators/admin/admin-home/
fd -t f "ts-import-providers.js" packages/react-generators/src/generators/admin/admin-home/

# Check if there's a generator config that should create this file
echo "Checking for generator configuration..."
rg -A 5 -B 5 "ts-import-providers" packages/react-generators/src/generators/admin/admin-home/

# Check if similar patterns exist in other admin generators
echo "Checking for similar patterns in other admin generators..."
rg "generated/ts-import-providers" packages/react-generators/src/generators/admin/

Length of output: 7211


Fix import path for generated ts-import-providers

The ./generated/ts-import-providers.js file doesn’t exist under admin-home; the shared import providers are generated in core/react-components. Update the import specifier in your index (and similarly in other admin generators) to point to that location:

• File: packages/react-generators/src/generators/admin/admin-home/index.ts
Lines 2–3:

-export type { AdminHomeImportsProvider } from './generated/ts-import-providers.js';
-export { adminHomeImportsProvider } from './generated/ts-import-providers.js';
+export type { AdminHomeImportsProvider } from '../../core/react-components/generated/ts-import-providers.js';
+export { adminHomeImportsProvider } from '../../core/react-components/generated/ts-import-providers.js';

Repeat the same path adjustment for:

  • admin-layout/index.ts
  • admin-components/index.ts
  • any other admin-*/index.ts that imports from ./generated/ts-import-providers.js
🧰 Tools
🪛 GitHub Actions: Test

[error] 2-2: TypeScript error TS2307: Cannot find module './generated/ts-import-providers.js' or its corresponding type declarations.

🤖 Prompt for AI Agents
In packages/react-generators/src/generators/admin/admin-home/index.ts at lines 2
to 3, the import path './generated/ts-import-providers.js' is incorrect because
the file does not exist there. Update the import specifier to point to the
correct shared location
'core/react-components/generated/ts-import-providers.js'. Apply the same path
correction to other admin generator index files like admin-layout/index.ts and
admin-components/index.ts that import from './generated/ts-import-providers.js'.

Comment on lines +64 to +72
<div className="flex h-full items-center justify-center">
<Card className="w-sm space-y-4 p-4">
<Alert variant="error">
<AlertTitle>{title}</AlertTitle>
<AlertDescription>{description}</AlertDescription>
</Alert>
<Button onClick={() => logout()}>Log Out</Button>
</Card>
</div>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add plugin prefix to Tailwind classes.

According to the coding guidelines, all CSS classes in plugin components must be prefixed with the plugin name (auth-) to avoid style conflicts.

-      <div className="flex h-full items-center justify-center">
-        <Card className="w-sm space-y-4 p-4">
+      <div className="auth-flex auth-h-full auth-items-center auth-justify-center">
+        <Card className="auth-w-sm auth-space-y-4 auth-p-4">
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<div className="flex h-full items-center justify-center">
<Card className="w-sm space-y-4 p-4">
<Alert variant="error">
<AlertTitle>{title}</AlertTitle>
<AlertDescription>{description}</AlertDescription>
</Alert>
<Button onClick={() => logout()}>Log Out</Button>
</Card>
</div>
<div className="auth-flex auth-h-full auth-items-center auth-justify-center">
<Card className="auth-w-sm auth-space-y-4 auth-p-4">
<Alert variant="error">
<AlertTitle>{title}</AlertTitle>
<AlertDescription>{description}</AlertDescription>
</Alert>
<Button onClick={() => logout()}>Log Out</Button>
</Card>
</div>
🤖 Prompt for AI Agents
In
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
around lines 64 to 72, the Tailwind CSS classes used in the div, Card, Alert,
and Button components lack the required plugin prefix. To fix this, add the
prefix "auth-" to all Tailwind class names in this block, such as changing
"flex" to "auth-flex", "w-sm" to "auth-w-sm", and so forth, ensuring all CSS
classes follow the coding guideline to avoid style conflicts.

@@ -0,0 +1,78 @@
// @ts-nocheck
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove TypeScript checking bypass.

The @ts-nocheck comment violates the coding guidelines that specify "TypeScript with strict type checking" for all .{ts,tsx} files. Enable strict type checking to ensure type safety.

-// @ts-nocheck
-
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// @ts-nocheck
🤖 Prompt for AI Agents
In
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
at line 1, remove the `// @ts-nocheck` comment to comply with strict TypeScript
checking guidelines. After removal, fix any resulting type errors by adding
appropriate type annotations or correcting type mismatches to ensure full type
safety without bypassing the compiler.

@kingston kingston merged commit de9e1b4 into main Jul 7, 2025
9 checks passed
@kingston kingston deleted the kingston/eng-776-refactor-auth0-to-use-global-zustand-state-instead-of branch July 7, 2025 18:24
@github-actions github-actions bot mentioned this pull request Jul 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants