smithery/beetz12

turborepo-convert

Convert an existing project to a Turborepo monorepo. Use when the user wants to set up a monorepo, convert to Turborepo, or restructure a project with multiple apps/packages. Handles moving existing files, configuring workspaces, and preserving Git history.

Installation

$ npx skills add smithery/beetz12 --skill turborepo-convert

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,184 B
  • docs SUMMARY.md 282 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Turborepo Monorepo Conversion

Overview

This skill converts an existing project into a Turborepo monorepo structure. It handles:

  • Creating the Turborepo scaffold
  • Moving existing apps to the apps/ directory
  • Setting up shared packages in packages/
  • Configuring workspace dependencies
  • Preserving Git history

Prerequisites

  • Node.js 18+ installed
  • Git repository initialized
  • Existing project with frontend and/or backend

Standard Monorepo Structure

project-root/
├── apps/
│   ├── web/          # Next.js frontend
│   ├── backend/      # Backend API (Motia, Express, etc.)
│   └── docs/         # Documentation site (optional)
├── packages/
│   ├── ui/           # Shared UI components
│   ├── config/       # Shared configs (ESLint, TypeScript)
│   └── types/        # Shared TypeScript types
├── turbo.json        # Turborepo configuration
├── package.json      # Root package.json with workspaces
└── pnpm-workspace.yaml  # If using pnpm

Conversion Steps

Step 1: Backup and Prepare

# Create a backup branch
git checkout -b pre-monorepo-backup
git push origin pre-monorepo-backup
git checkout main

Step 2: Create Turborepo Structure

Create the directory structure first:

mkdir -p apps packages

Step 3: Create Root package.json

Create a root package.json with workspaces:

{
  "name": "project-monorepo",
  "private": true,
  "workspaces": [
    "apps/*",
    "packages/*"
  ],
  "scripts": {
    "build": "turbo build",
    "dev": "turbo dev",
    "lint": "turbo lint",
    "test": "turbo test",
    "clean": "turbo clean"
  },
  "devDependencies": {
    "turbo": "^2.3.3"
  },
  "packageManager": "[email protected]"
}

Step 4: Create turbo.json

{
  "$schema": "https://turbo.build/schema.json",
  "ui": "tui",
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "inputs": ["$TURBO_DEFAULT$", ".env*"],
      "outputs": [".next/**", "!.next/cache/**", "dist/**"]
    },
    "dev": {
      "cache": false,
      "persistent": true
    },
    "lint": {
      "dependsOn": ["^lint"]
    },
    "test": {
      "dependsOn": ["^build"]
    },
    "clean": {
      "cache": false
    }
  }
}

Step 5: Move Backend to apps/backend

For a Motia backend:

# Create apps/backend directory
mkdir -p apps/backend

# Move backend files (preserve structure)
mv src apps/backend/
mv motia.config.ts apps/backend/
mv python_modules apps/backend/
mv middlewares apps/backend/
mv requirements.txt apps/backend/
mv tsconfig.json apps/backend/
mv types.d.ts apps/backend/

Update apps/backend/package.json:

  • Change name to @project/backend
  • Update script paths if needed

Step 6: Move Frontend to apps/web

# Move frontend to apps/web
mv frontend apps/web

Update apps/web/package.json:

  • Change name to @project/web
  • Update dependencies to use workspace references

Step 7: Handle Shared Dependencies

Move common dependencies to root or create shared packages:

# Create shared config package
mkdir -p packages/config

Step 8: Update .gitignore

Add monorepo-specific ignores:

# Turborepo
.turbo

# Node modules in all workspaces
node_modules
**/node_modules

# Build outputs
apps/**/dist
apps/**/.next
packages/**/dist

Step 9: Install Dependencies

# Remove old node_modules
rm -rf node_modules
rm -rf apps/*/node_modules
rm -rf packages/*/node_modules

# Install from root
npm install

Step 10: Verify and Test

# Run build across all workspaces
npx turbo build

# Run dev servers
npx turbo dev

Git History Preservation

To preserve Git history when moving files:

# Use git mv instead of mv
git mv src apps/backend/src
git mv frontend apps/web

For already-moved files, Git will track renames automatically if the content similarity is high enough.

Common Issues

Issue: Workspace dependencies not resolving

Solution: Ensure workspaces is correctly defined in root package.json and run npm install from root.

Issue: TypeScript path aliases not working

Solution: Update tsconfig.json in each app to use proper paths relative to new location.

Issue: Environment variables not loading

Solution: Update .env file locations or use dotenv-cli to specify paths.

Rollback

If something goes wrong:

git checkout pre-monorepo-backup
git branch -D main
git checkout -b main
git push --force origin main

Post-Conversion Checklist

  • All apps build successfully with turbo build
  • Dev servers start with turbo dev
  • Environment variables load correctly
  • Git history preserved for important files
  • CI/CD pipelines updated
  • Docker configurations updated
  • README updated with new commands