Skip to content
Productivity
Skill

/project-structure

Project structure and file organization guidelines

BOOST
From plugin
inbox-zero
12k25 skills2 agents
Install
$ npx -y skills add elie222/inbox-zero --skill project-structure --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/project-structure

Context preview

The summary Claude sees to decide when to auto-load this skill.

Project structure and file organization guidelines

SKILL.md

project-structure.SKILL.md
name: project-structure
description: Project structure and file organization guidelines

Project Structure

Main Structure

  • We use Turborepo with pnpm workspaces
  • Main app is in `apps/web`
  • Packages are in the `packages` folder
  • Server actions are in `apps/web/utils/actions` folder
.
├── apps
│   ├── web/             # Main Next.js application
│   │   ├── app/         # Next.js App Router
│   │   │   ├── (app)/   # Main application pages
│   │   │   │   ├── assistant/     # AI assistant feature
│   │   │   │   ├── reply-zero/     # Reply Zero feature
│   │   │   │   ├── settings/       # User settings
│   │   │   │   ├── setup/          # Main onboarding
│   │   │   │   ├── clean/          # Bulk email cleanup
│   │   │   │   ├── smart-categories/ # Smart sender categorization
│   │   │   │   ├── bulk-unsubscribe/ # Bulk unsubscribe
│   │   │   │   ├── stats/          # Email analytics
│   │   │   │   ├── mail/           # Email client (in beta)
│   │   │   │   └── ... (other app routes)
│   │   │   ├── api/    # API Routes
│   │   │   │   ├── knowledge/      # Knowledge base API
│   │   │   │   ├── reply-tracker/  # Reply tracking
│   │   │   │   ├── clean/          # Cleanup API
│   │   │   │   ├── ai/            # AI features API
│   │   │   │   ├── user/          # User management
│   │   │   │   ├── google/        # Google integration
│   │   │   │   ├── auth/          # Authentication
│   │   │   │   └── ... (other APIs)
│   │   │   ├── (landing)/  # Marketing/landing pages
│   │   │   ├── blog/       # Blog pages
│   │   │   ├── layout.tsx  # Root layout
│   │   │   └── ... (other app files)
│   │   ├── utils/       # Utility functions and helpers
│   │   │   ├── actions/    # Server actions
│   │   │   ├── ai/         # AI-related utilities
│   │   │   ├── llms/       # Language model utilities
│   │   │   ├── gmail/      # Gmail integration utilities
│   │   │   ├── redis/      # Redis utilities
│   │   │   ├── user/       # User-related utilities
│   │   │   ├── parse/      # Parsing utilities
│   │   │   ├── queue/      # Queue management
│   │   │   ├── error-messages/  # Error handling
│   │   │   └── *.ts        # Other utility files (auth, email, etc.)
│   │   ├── public/      # Static assets (images, fonts)
│   │   ├── prisma/      # Prisma schema and client
│   │   ├── styles/      # Global CSS styles
│   │   ├── providers/   # React Context providers
│   │   ├── hooks/       # Custom React hooks
│   │   ├── sanity/      # Sanity CMS integration
│   │   ├── __tests__/   # AI test files (Vitest)
│   │   ├── scripts/     # Utility scripts
│   │   ├── store/       # State management
│   │   ├── types/       # TypeScript type definitions
│   │   ├── next.config.mjs
│   │   ├── package.json
│   │   └── ... (config files)
├── packages
    ├── tinybird/
    ├── loops/
    ├── resend/
    ├── tinybird-ai-analytics/
    └── tsconfig/

File Naming and Organization

  • Use kebab case for route directories (e.g., `api/hello-world/route`)
  • Use PascalCase for components (e.g. `components/Button.tsx`)
  • Shadcn components are in `components/ui`
  • All other components are in `components/`
  • Colocate files in the folder where they're used unless they can be used across the app
  • If a component can be used in many places, place it in the `components` folder

New Pages

  • Create new pages at: `apps/web/app/(app)/PAGE_NAME/page.tsx`
  • Components for the page are either in `page.tsx` or in the `apps/web/app/(app)/PAGE_NAME` folder
  • Pages are Server components for direct data loading
  • Use `swr` for data fetching in deeply nested components
  • Components with `onClick` must be client components with `use client` directive
  • Server action files must start with `use server`

Utility Functions

  • Create utility functions in `utils/` folder for reusable logic
  • Use lodash utilities for common operations (arrays, objects, strings)
  • Import specific lodash functions to minimize bundle size:
  import groupBy from "lodash/groupBy";
Read more
Ships withinbox-zero

The world's best AI personal assistant for email. Open source app to help you reach inbox zero fast.

Get the whole plugin
Stats
12,401
Stars
1,559
Forks
Active
Maintenance
TypeScript
Language
7h ago
Last commit
3y ago
Created
3h ago
Added

Repo: elie222/inbox-zero

Other skills on inbox-zero.