Skip to content

fix: Fix ignore patterns for monorepo root to handle .turbo/** and apps/** correctly#695

Merged
kingston merged 1 commit into
mainfrom
kingston/eng-916-improve-handling-of-monorepo-and-prettiergitignore
Nov 24, 2025
Merged

fix: Fix ignore patterns for monorepo root to handle .turbo/** and apps/** correctly#695
kingston merged 1 commit into
mainfrom
kingston/eng-916-improve-handling-of-monorepo-and-prettiergitignore

Conversation

@kingston

@kingston kingston commented Nov 21, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • Bug Fixes

    • Fixed Prettier formatting configuration to properly handle subdirectories in monorepo projects by updating ignore patterns.
    • Added exclusions for build artifacts from source control tracking.
  • Chores

    • Updated release workflow badge reference in documentation.
    • Synchronized ignore patterns and formatting configurations across example projects.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercel Bot commented Nov 21, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
baseplate-project-builder-web Error Error Nov 21, 2025 10:51am

@changeset-bot

changeset-bot Bot commented Nov 21, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a32133a

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

This PR includes changesets to release 18 packages
Name Type
@baseplate-dev/project-builder-server Patch
@baseplate-dev/project-builder-cli Patch
@baseplate-dev/project-builder-common Patch
@baseplate-dev/project-builder-test Patch
@baseplate-dev/project-builder-web Patch
@baseplate-dev/create-project Patch
@baseplate-dev/code-morph Patch
@baseplate-dev/core-generators Patch
@baseplate-dev/fastify-generators Patch
@baseplate-dev/project-builder-lib Patch
@baseplate-dev/react-generators Patch
@baseplate-dev/sync Patch
@baseplate-dev/tools Patch
@baseplate-dev/ui-components Patch
@baseplate-dev/utils Patch
@baseplate-dev/plugin-auth Patch
@baseplate-dev/plugin-queue Patch
@baseplate-dev/plugin-storage 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

@coderabbitai

coderabbitai Bot commented Nov 21, 2025

Copy link
Copy Markdown

Walkthrough

This PR modifies ignore patterns and Prettier configuration across the monorepo to address a VSCode Prettier issue. Changes include adding .turbo/** to multiple .gitignore files, replacing /apps/** with pnpm-workspace.yaml in .prettierignore files, and updating root-level Prettier scripts to exclude the apps directory via a negation pattern. The core implementation is in RootPackageCompiler.

Changes

Cohort / File(s) Summary
Changeset and Documentation
.changeset/fix-turbo-and-apps-ignore-patterns.md, README.md
Added patch entry for @baseplate-dev/project-builder-server and updated release badge link from changesets workflow to release workflow.
Gitignore Updates
examples/blog-with-auth/.gitignore, examples/todo-with-auth0/.gitignore
Added .turbo/** entries under new "Turbo build artifacts" sections to ignore Turbo build directory.
Prettier Ignore Updates
examples/blog-with-auth/.prettierignore, examples/todo-with-auth0/.prettierignore
Replaced /apps/** ignore rule with pnpm-workspace.yaml in both files.
Package.json Script Updates
examples/blog-with-auth/package.json, examples/todo-with-auth0/package.json
Modified prettier:check:root and prettier:write:root scripts to exclude apps/** directory via negation pattern "!apps/**".
Core Compiler Changes
packages/project-builder-server/src/compiler/root/root-package-compiler.ts
Updated RootPackageCompiler to add .turbo/** as gitIgnore additionalExclusions, modified root prettier scripts to exclude appsFolder via !${appsFolder}/**, and updated prettier ignore paths from /${appsFolder}/** to pnpm-workspace.yaml.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Repetitive pattern changes: Most modifications are consistent configuration updates applied across multiple files (gitignore, prettierignore, and package.json scripts), reducing cognitive load.
  • Attention area: The root-package-compiler.ts file warrants closer review to ensure the additionalExclusions parameter integration and script template updates function correctly with the compiler logic.

Possibly related PRs

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: fixing ignore patterns for .turbo/** and apps/** in the monorepo root, which aligns with the changeset additions and modifications across multiple configuration files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch kingston/eng-916-improve-handling-of-monorepo-and-prettiergitignore

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between b2b45a3 and a32133a.

⛔ Files ignored due to path filters (12)
  • examples/blog-with-auth/baseplate/generated/.gitignore is excluded by !**/generated/**, !**/generated/**
  • examples/blog-with-auth/baseplate/generated/.prettierignore is excluded by !**/generated/**, !**/generated/**
  • examples/blog-with-auth/baseplate/generated/package.json is excluded by !**/generated/**, !**/generated/**
  • examples/todo-with-auth0/baseplate/generated/.gitignore is excluded by !**/generated/**, !**/generated/**
  • examples/todo-with-auth0/baseplate/generated/.prettierignore is excluded by !**/generated/**, !**/generated/**
  • examples/todo-with-auth0/baseplate/generated/package.json is excluded by !**/generated/**, !**/generated/**
  • tests/simple/.gitignore is excluded by !tests/**
  • tests/simple/.prettierignore is excluded by !tests/**
  • tests/simple/baseplate/generated/.gitignore is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/baseplate/generated/.prettierignore is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/baseplate/generated/package.json is excluded by !**/generated/**, !tests/**, !**/generated/**
  • tests/simple/package.json is excluded by !tests/**
📒 Files selected for processing (9)
  • .changeset/fix-turbo-and-apps-ignore-patterns.md (1 hunks)
  • README.md (1 hunks)
  • examples/blog-with-auth/.gitignore (1 hunks)
  • examples/blog-with-auth/.prettierignore (1 hunks)
  • examples/blog-with-auth/package.json (1 hunks)
  • examples/todo-with-auth0/.gitignore (1 hunks)
  • examples/todo-with-auth0/.prettierignore (1 hunks)
  • examples/todo-with-auth0/package.json (1 hunks)
  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts (2 hunks)
🧰 Additional context used
📓 Path-based instructions (7)
**/*

📄 CodeRabbit inference engine (.cursor/rules/code-style.mdc)

Use kebab-case for file names

Files:

  • examples/todo-with-auth0/package.json
  • README.md
  • examples/blog-with-auth/package.json
  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
examples/todo-with-auth0/{package.json,apps/{admin,backend}/package.json}

📄 CodeRabbit inference engine (examples/todo-with-auth0/CLAUDE.md)

Use ESM only by setting "type": "module" in package.json

Files:

  • examples/todo-with-auth0/package.json
.changeset/**/*.md

📄 CodeRabbit inference engine (AGENTS.md)

.changeset/**/*.md: When adding a new feature or changing an existing feature, add a new Changeset in the .changeset/ directory
Changeset files must follow the specified frontmatter format with a package entry set to patch and a description body

Files:

  • .changeset/fix-turbo-and-apps-ignore-patterns.md
examples/blog-with-auth/**/package.json

📄 CodeRabbit inference engine (examples/blog-with-auth/CLAUDE.md)

Module system must be ESM only by setting "type": "module" in package.json

Files:

  • examples/blog-with-auth/package.json
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/code-style.mdc)

**/*.{ts,tsx}: TypeScript with strict type checking
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/)
If a particular interface or type is not exported, change the file so it is exported

If a particular interface or type is not exported, update the TypeScript file so it is exported

Files:

  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
**/*.{js,ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/code-style.mdc)

Node 16 module resolution - include file extensions in imports (.js)

Files:

  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
**/*.{ts,tsx,js}

📄 CodeRabbit inference engine (.cursor/rules/code-style.mdc)

**/*.{ts,tsx,js}: Sort imports by group: external libs first, then local imports
Use camelCase for variables/functions, PascalCase for types/classes
Order functions such that functions are placed below the variables/functions they use
We use the prefer using nullish coalescing operator (??) ESLint rule instead of a logical or (||), as it is a safer operator
Use console.info/warn/error instead of console.log

Files:

  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
🧠 Learnings (31)
📓 Common learnings
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-07-22T09:10:31.413Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`src/` is the alias for `src/`)
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-07-22T09:11:29.223Z
Learning: Applies to {packages/project-builder-web/**,packages/ui-components/**}/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/dev-commands.mdc:0-0
Timestamp: 2025-09-03T17:03:52.726Z
Learning: From repository root, lint affected files with auto-fixing using `pnpm lint:only:affected -- --fix`
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-07-22T09:10:31.413Z
Learning: Applies to **/*.{js,ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{unit,int}.test.ts : Collocate tests with source files (tests live under the src tree)
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{package.json,apps/{admin,backend}/package.json} : Use ESM only by setting "type": "module" in package.json

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{unit,int}.test.ts : Collocate tests with source files (tests live under the src tree)

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • examples/todo-with-auth0/.gitignore
  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{unit,int}.test.ts : Name test files with .unit.test.ts or .int.test.ts suffixes

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • examples/todo-with-auth0/.gitignore
  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{unit,int}.test.ts : Vitest tests must not use globals; import describe/it/expect from 'vitest'

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{tsconfig*.json,apps/{admin,backend}/tsconfig*.json} : Use TypeScript NodeNext module resolution and module ("moduleResolution": "NodeNext", "module": "NodeNext")

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/* : Use kebab-case for all file and directory names

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{ts,tsx} : Add JSDoc to all exported functions, interfaces, and classes documenting purpose, parameters, returns, and fields

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{ts,tsx} : Use `import type` for type-only imports

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/**/package.json : Module system must be ESM only by setting "type": "module" in package.json

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • examples/blog-with-auth/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{tsconfig*.json,apps/{admin,backend}/tsconfig*.json} : Enable strict type checking in TypeScript ("strict": true)

Applied to files:

  • examples/todo-with-auth0/package.json
📚 Learning: 2025-10-14T08:07:58.492Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-14T08:07:58.492Z
Learning: Run pnpm lint:affected and pnpm typecheck before committing changes

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
📚 Learning: 2025-09-03T17:03:52.726Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/dev-commands.mdc:0-0
Timestamp: 2025-09-03T17:03:52.726Z
Learning: From repository root, lint affected files with auto-fixing using `pnpm lint:only:affected -- --fix`

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
📚 Learning: 2025-09-03T17:03:52.726Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/dev-commands.mdc:0-0
Timestamp: 2025-09-03T17:03:52.726Z
Learning: From repository root, run affected tests using `pnpm test:affected`

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
📚 Learning: 2025-06-03T09:11:29.651Z
Learnt from: kingston
Repo: halfdomelabs/baseplate PR: 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.

Applied to files:

  • examples/todo-with-auth0/package.json
  • examples/blog-with-auth/package.json
  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Make configuration changes through the Baseplate UI when possible

Applied to files:

  • README.md
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: When working with generated code, prefer changing configuration through the Baseplate UI and follow existing architectural patterns

Applied to files:

  • README.md
📚 Learning: 2025-10-14T08:07:58.492Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-14T08:07:58.492Z
Learning: Applies to .changeset/**/*.md : Changeset files must follow the specified frontmatter format with a package entry set to patch and a description body

Applied to files:

  • .changeset/fix-turbo-and-apps-ignore-patterns.md
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/**/tsconfig*.json : Use TypeScript module resolution NodeNext (and matching ESM settings)

Applied to files:

  • examples/blog-with-auth/package.json
  • examples/blog-with-auth/.prettierignore
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/**/tsconfig*.json : Enable strict type checking (e.g., "strict": true)

Applied to files:

  • examples/blog-with-auth/package.json
  • examples/blog-with-auth/.prettierignore
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/apps/**/src/**/*.{ts,tsx} : Add JSDoc to all exported functions, interfaces, and classes, documenting purpose, parameters, return values, and all fields

Applied to files:

  • examples/blog-with-auth/package.json
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/apps/**/src/**/*.{ts,tsx} : Always use .js file extensions in import statements, even when importing from .ts files

Applied to files:

  • examples/blog-with-auth/.prettierignore
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/**/tsconfig*.json : Enable isolatedModules

Applied to files:

  • examples/blog-with-auth/.prettierignore
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Applies to examples/blog-with-auth/apps/**/src/**/*.{ts,tsx} : Use `import type` for type-only imports

Applied to files:

  • examples/blog-with-auth/.prettierignore
📚 Learning: 2025-09-03T17:03:52.726Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/dev-commands.mdc:0-0
Timestamp: 2025-09-03T17:03:52.726Z
Learning: From a package, build using `pnpm build`

Applied to files:

  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-09-03T17:03:52.726Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/dev-commands.mdc:0-0
Timestamp: 2025-09-03T17:03:52.726Z
Learning: From repository root, build using `pnpm build`

Applied to files:

  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:00:29.010Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/blog-with-auth/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:00:29.010Z
Learning: Use pnpm (version 10+) as the package manager for all development tasks

Applied to files:

  • examples/blog-with-auth/.prettierignore
  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{apps/admin/src,apps/backend/src}/**/*.{ts,tsx} : Always use .js extensions in import statements, even when importing from TypeScript files

Applied to files:

  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-10-23T21:01:15.331Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: examples/todo-with-auth0/CLAUDE.md:0-0
Timestamp: 2025-10-23T21:01:15.331Z
Learning: Applies to examples/todo-with-auth0/{tsconfig*.json,apps/{admin,backend}/tsconfig*.json} : Enable "isolatedModules": true in TypeScript

Applied to files:

  • examples/todo-with-auth0/.prettierignore
📚 Learning: 2025-07-22T09:10:31.413Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-07-22T09:10:31.413Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`src/` is the alias for `src/`)

Applied to files:

  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
📚 Learning: 2025-07-22T09:11:29.223Z
Learnt from: CR
Repo: halfdomelabs/baseplate PR: 0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-07-22T09:11:29.223Z
Learning: Applies to {packages/project-builder-web/**,packages/ui-components/**}/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)

Applied to files:

  • packages/project-builder-server/src/compiler/root/root-package-compiler.ts
🧬 Code graph analysis (1)
packages/project-builder-server/src/compiler/root/root-package-compiler.ts (1)
packages/core-generators/src/generators/node/prettier/prettier.generator.ts (1)
  • prettierGenerator (123-296)
🪛 markdownlint-cli2 (0.18.1)
.changeset/fix-turbo-and-apps-ignore-patterns.md

5-5: Bare URL used

(MD034, no-bare-urls)


5-5: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)


5-5: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)


5-5: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)

⏰ 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). (3)
  • GitHub Check: Test E2E
  • GitHub Check: test
  • GitHub Check: Lint
🔇 Additional comments (11)
examples/todo-with-auth0/.gitignore (1)

29-31: LGTM!

Clean addition of Turbo build artifacts exclusion following standard .gitignore conventions.

examples/todo-with-auth0/package.json (2)

17-21: Root Prettier scripts now properly exclude apps/ via negation pattern.**

The updated scripts correctly implement the workaround for the VSCode Prettier issue by using !apps/** negation to exclude the apps directory from root-level formatting runs, while still allowing per-package formatting to proceed via turbo. This approach avoids the bug where apps/** in Prettier config would incorrectly ignore all files within the apps subdirectories.


19-21: Glob negation syntax verified as correct.

Prettier 3.6.2's CLI resolves non-literal arguments as globs using fast-glob, which supports negative patterns using the leading "!" syntax. The patterns in the scripts are properly quoted to avoid shell expansion, so the implementation is valid.

README.md (1)

7-7: Confirm scope: badge workflow change appears unrelated to ignore patterns.

This README badge change switches from the changesets workflow to the release workflow. While valid, it seems orthogonal to the PR's primary objective of fixing monorepo ignore patterns. Ensure this is intentional and not scope creep.

examples/blog-with-auth/.gitignore (1)

29-31: LGTM!

Consistent .turbo/** exclusion mirroring the todo-with-auth0 example.

examples/blog-with-auth/.prettierignore (1)

1-9: Correct strategy: replace directory ignore with file-level ignore.

Removing /apps/** from Prettier ignore list and adding pnpm-workspace.yaml shifts the exclusion strategy from .prettierignore to root script negation patterns. This avoids the VSCode Prettier bug. The file-level ignore of pnpm-workspace.yaml is appropriate since it's workspace configuration, not source code.

examples/todo-with-auth0/.prettierignore (1)

1-9: LGTM!

Consistent strategy with blog-with-auth: replace directory exclusion with file-level ignore.

examples/blog-with-auth/package.json (1)

19-21: LGTM!

Consistent implementation of root Prettier scripts with !apps/** negation pattern across both example projects. Same verification needed as in todo-with-auth0/package.json regarding Prettier 3.6.2 support.

packages/project-builder-server/src/compiler/root/root-package-compiler.ts (3)

147-147: Approve the ignore path changes, but verify the split exclusion strategy.

The change from excluding /${appsFolder}/** in .prettierignore to handling it via script-level negation (lines 127-128) is logical and aligns with the PR objectives. However, this creates a split strategy where .prettierignore excludes build artifacts while scripts exclude the apps folder.

Ensure that:

  1. The script-level negation pattern (lines 127-128) works correctly to exclude apps/**
  2. The .prettierignore exclusions (.turbo/**, pnpm-workspace.yaml) are sufficient for root-level tooling

If the negation pattern syntax in lines 127-128 is incorrect, the apps folder won't be excluded at all.


142-144: No issues found—the code correctly handles comments in additionalExclusions.

The nodeGitIgnoreGenerator spreads each element from additionalExclusions into the exclusionLines array and joins them with newlines when writing to .gitignore. Comment strings like '# Turbo build artifacts' are valid gitignore lines and will be written correctly. The implementation is working as intended.

Likely an incorrect or invalid review comment.


127-128: Verify Prettier CLI negation pattern syntax.

The negation pattern "!${appsFolder}/**" may not work as expected with Prettier CLI. Prettier typically requires negation patterns to be passed via the --ignore-pattern flag rather than as a quoted glob pattern argument.

Run the following script to verify the correct syntax:

Alternatively, consider using the --ignore-pattern flag:

'prettier:check:root': `prettier --check . --ignore-pattern "${appsFolder}/**"`,
'prettier:write:root': `prettier --write . --ignore-pattern "${appsFolder}/**"`,

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kingston kingston merged commit b0152d1 into main Nov 24, 2025
16 of 17 checks passed
@kingston kingston deleted the kingston/eng-916-improve-handling-of-monorepo-and-prettiergitignore branch November 24, 2025 19:43
@github-actions github-actions Bot mentioned this pull request Nov 24, 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.

1 participant