{"owner":"transloadit","repo":"uppy","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Overview\n\nUppy is a modular JavaScript file uploader that integrates seamlessly with any application. It's built using a monorepo structure with Yarn workspaces, Turbo for build orchestration, and Biome for linting/formatting.\n\n## Development Commands\n\n### Core Commands\n- `yarn build` - Build all packages (uses Turbo)\n- `yarn build:watch` - Watch mode for building packages\n- `yarn test` - Run tests for all packages\n- `yarn test:watch` - Run tests in watch mode\n- `yarn typecheck` - Type checking across all packages\n- `yarn check` - Run Biome linting and formatting\n- `yarn check:ci` - Run Biome in CI mode (no writes)\n\n### Development Server\n- `yarn dev` - Start development server (from private/dev workspace)\n- `yarn dev:with-companion` - Start dev server with Companion backend\n- `yarn start:companion` - Start only the Companion server\n\n### Single Test Execution\nTo run tests for a specific package:\n```bash\nyarn workspace @uppy/[package-name] test\n# Example: yarn workspace @uppy/core test\n```\n\n### Individual Package Development\n```bash\nyarn workspace @uppy/[package-name] build\n```\n\n## Architecture\n\n### Monorepo Structure\n- `packages/@uppy/` - Core Uppy packages (plugins, utilities)\n- `packages/uppy/` - Main bundle package\n- `examples/` - Example implementations for various frameworks\n- `private/` - Internal development tools\n\n### Core Architecture\n- **Uppy Core** (`@uppy/core`) - Main class that manages plugins, state, and events\n- **Plugins** - Modular components for different functionalities:\n  - **UI Plugins**: Dashboard, Drag & Drop, File Input, Webcam, etc.\n  - **Provider Plugins**: Google Drive, Dropbox, etc. (require Companion)\n  - **Uploader Plugins**: Tus (resumable), XHR Upload, AWS S3, etc.\n  - **Utility Plugins**: Golden Retriever (recovery), Thumbnail Generator, etc.\n\n### Plugin Types\n1. **Acquirer** - Gets files (File Input, Webcam, Google Drive)\n2. **Modifier** - Modifies files (Image Editor, Compressor)\n3. **Uploader** - Uploads files (Tus, XHR, AWS S3)\n4. **Presenter** - Shows UI (Dashboard, Progress Bar, Status Bar)\n5. **Orchestrator** - Manages workflow\n6. **Logger** - Handles logging\n\n### Key Packages\n- `@uppy/core` - Main Uppy class and plugin system\n- `@uppy/dashboard` - Complete UI with file management\n- `@uppy/companion` - Server-side component for remote providers\n- `@uppy/companion-client` - Client for communicating with Companion\n- `@uppy/utils` - Shared utilities\n- `@uppy/components` - Headless Preact components (with framework wrappers)\n\n## Build System\n\n### Turbo Configuration\nThe build system uses Turbo (turbo.json) for task orchestration:\n- Builds have dependency ordering (`dependsOn: [\"^build\"]`)\n- TypeScript builds output to `lib/` and `dist/` directories\n- CSS builds process SCSS files to CSS\n- Special handling for the main `uppy` package bundle\n\n### TypeScript Configuration\n- Shared config in `tsconfig.shared.json`\n- Individual packages have `tsconfig.json` and `tsconfig.build.json`\n- Build outputs include declaration files (.d.ts) and source maps\n\n## Code Standards\n\n### Linting and Formatting\n- **Biome** is used for linting and formatting (replaces ESLint/Prettier)\n- Configuration in `biome.json`\n- Use single quotes, semicolons as needed\n- 2-space indentation\n\n### Framework Integration\n- **Preact** for UI components with framework wrappers generated for React, Vue, Svelte\n- **TypeScript** throughout the codebase\n- Components in `@uppy/components` use Tailwind CSS with `uppy:` prefix\n\n### Plugin Development\n- All plugins extend `BasePlugin` or `UIPlugin`\n- Plugins must have unique IDs and specify their type\n- State management through Uppy's store system\n- Event-driven architecture using namespace-emitter\n\n## Testing\n\n### Test Framework\n- **Vitest** for unit tests (migrated from Jest)\n- **Vitest Browser Mode** for browser testing (migrated from Cypress)\n- Unit tests use `.test.{ts,tsx}` extensions and browser tests `.browser.test.{ts,tsx}`\n\n### Running Tests\n- Tests run in parallel across packages via Turbo\n- Examples also include tests (React, Vue, SvelteKit examples)\n- Use `yarn test` for development\n\n## Companion Server\n\nThe Companion server enables integration with remote file sources:\n- Handles OAuth flows for providers like Google Drive, Dropbox\n- Proxies file downloads to avoid CORS issues\n- Provides search functionality for providers\n- Located in `packages/@uppy/companion/`\n\n## Important Notes\n\n- Never commit sensitive information (API keys, tokens)\n- Follow existing code conventions and patterns within each package\n- Use the `@uppy/utils` package for shared functionality\n- UI components should be accessible and support internationalization\n- Always run `yarn check` and `yarn typecheck` before committing\n- When adding a new component to `@uppy/components`, you have to run `yarn migrate:components` from root.\n  This is not needed for changing existing components.\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Overview\n\nUppy is a modular JavaScript file uploader that integrates seamlessly with any application. It's built using a monorepo structure with Yarn workspaces, Turbo for build orchestration, and Biome for linting/formatting.\n\n## Development Commands\n\n### Core Commands\n- `yarn build` - Build all packages (uses Turbo)\n- `yarn build:watch` - Watch mode for building packages\n- `yarn test` - Run tests for all packages\n- `yarn test:watch` - Run tests in watch mode\n- `yarn typecheck` - Type checking across all packages\n- `yarn check` - Run Biome linting and formatting\n- `yarn check:ci` - Run Biome in CI mode (no writes)\n\n### Development Server\n- `yarn dev` - Start development server (from private/dev workspace)\n- `yarn dev:with-companion` - Start dev server with Companion backend\n- `yarn start:companion` - Start only the Companion server\n\n### Single Test Execution\nTo run tests for a specific package:\n```bash\nyarn workspace @uppy/[package-name] test\n# Example: yarn workspace @uppy/core test\n```\n\n### Individual Package Development\n```bash\nyarn workspace @uppy/[package-name] build\n```\n\n## Architecture\n\n### Monorepo Structure\n- `packages/@uppy/` - Core Uppy packages (plugins, utilities)\n- `packages/uppy/` - Main bundle package\n- `examples/` - Example implementations for various frameworks\n- `private/` - Internal development tools\n\n### Core Architecture\n- **Uppy Core** (`@uppy/core`) - Main class that manages plugins, state, and events\n- **Plugins** - Modular components for different functionalities:\n  - **UI Plugins**: Dashboard, Drag & Drop, File Input, Webcam, etc.\n  - **Provider Plugins**: Google Drive, Dropbox, etc. (require Companion)\n  - **Uploader Plugins**: Tus (resumable), XHR Upload, AWS S3, etc.\n  - **Utility Plugins**: Golden Retriever (recovery), Thumbnail Generator, etc.\n\n### Plugin Types\n1. **Acquirer** - Gets files (File Input, Webcam, Google Drive)\n2. **Modifier** - Modifies files (Image Editor, Compressor)\n3. **Uploader** - Uploads files (Tus, XHR, AWS S3)\n4. **Presenter** - Shows UI (Dashboard, Progress Bar, Status Bar)\n5. **Orchestrator** - Manages workflow\n6. **Logger** - Handles logging\n\n### Key Packages\n- `@uppy/core` - Main Uppy class and plugin system\n- `@uppy/dashboard` - Complete UI with file management\n- `@uppy/companion` - Server-side component for remote providers\n- `@uppy/companion-client` - Client for communicating with Companion\n- `@uppy/utils` - Shared utilities\n- `@uppy/components` - Headless Preact components (with framework wrappers)\n\n## Build System\n\n### Turbo Configuration\nThe build system uses Turbo (turbo.json) for task orchestration:\n- Builds have dependency ordering (`dependsOn: [\"^build\"]`)\n- TypeScript builds output to `lib/` and `dist/` directories\n- CSS builds process SCSS files to CSS\n- Special handling for the main `uppy` package bundle\n\n### TypeScript Configuration\n- Shared config in `tsconfig.shared.json`\n- Individual packages have `tsconfig.json` and `tsconfig.build.json`\n- Build outputs include declaration files (.d.ts) and source maps\n\n## Code Standards\n\n### Linting and Formatting\n- **Biome** is used for linting and formatting (replaces ESLint/Prettier)\n- Configuration in `biome.json`\n- Use single quotes, semicolons as needed\n- 2-space indentation\n\n### Framework Integration\n- **Preact** for UI components with framework wrappers generated for React, Vue, Svelte\n- **TypeScript** throughout the codebase\n- Components in `@uppy/components` use Tailwind CSS with `uppy:` prefix\n\n### Plugin Development\n- All plugins extend `BasePlugin` or `UIPlugin`\n- Plugins must have unique IDs and specify their type\n- State management through Uppy's store system\n- Event-driven architecture using namespace-emitter\n\n## Testing\n\n### Test Framework\n- **Vitest** for unit tests (migrated from Jest)\n- **Vitest Browser Mode** for browser testing (migrated from Cypress)\n- Unit tests use `.test.{ts,tsx}` extensions and browser tests `.browser.test.{ts,tsx}`\n\n### Running Tests\n- Tests run in parallel across packages via Turbo\n- Examples also include tests (React, Vue, SvelteKit examples)\n- Use `yarn test` for development\n\n## Companion Server\n\nThe Companion server enables integration with remote file sources:\n- Handles OAuth flows for providers like Google Drive, Dropbox\n- Proxies file downloads to avoid CORS issues\n- Provides search functionality for providers\n- Located in `packages/@uppy/companion/`\n\n## Important Notes\n\n- Never commit sensitive information (API keys, tokens)\n- Follow existing code conventions and patterns within each package\n- Use the `@uppy/utils` package for shared functionality\n- UI components should be accessible and support internationalization\n- Always run `yarn check` and `yarn typecheck` before committing\n- When adding a new component to `@uppy/components`, you have to run `yarn migrate:components` from root.\n  This is not needed for changing existing components.\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Overview\n\nUppy is a modular JavaScript file uploader that integrates seamlessly with any application. It's built using a monorepo structure with Yarn workspaces, Turbo for build orchestration, and Biome for linting/formatting.\n\n## Development Commands\n\n### Core Commands\n- `yarn build` - Build all packages (uses Turbo)\n- `yarn build:watch` - Watch mode for building packages\n- `yarn test` - Run tests for all packages\n- `yarn test:watch` - Run tests in watch mode\n- `yarn typecheck` - Type checking across all packages\n- `yarn check` - Run Biome linting and formatting\n- `yarn check:ci` - Run Biome in CI mode (no writes)\n\n### Development Server\n- `yarn dev` - Start development server (from private/dev workspace)\n- `yarn dev:with-companion` - Start dev server with Companion backend\n- `yarn start:companion` - Start only the Companion server\n\n### Single Test Execution\nTo run tests for a specific package:\n```bash\nyarn workspace @uppy/[package-name] test\n# Example: yarn workspace @uppy/core test\n```\n\n### Individual Package Development\n```bash\nyarn workspace @uppy/[package-name] build\n```\n\n## Architecture\n\n### Monorepo Structure\n- `packages/@uppy/` - Core Uppy packages (plugins, utilities)\n- `packages/uppy/` - Main bundle package\n- `examples/` - Example implementations for various frameworks\n- `private/` - Internal development tools\n\n### Core Architecture\n- **Uppy Core** (`@uppy/core`) - Main class that manages plugins, state, and events\n- **Plugins** - Modular components for different functionalities:\n  - **UI Plugins**: Dashboard, Drag & Drop, File Input, Webcam, etc.\n  - **Provider Plugins**: Google Drive, Dropbox, etc. (require Companion)\n  - **Uploader Plugins**: Tus (resumable), XHR Upload, AWS S3, etc.\n  - **Utility Plugins**: Golden Retriever (recovery), Thumbnail Generator, etc.\n\n### Plugin Types\n1. **Acquirer** - Gets files (File Input, Webcam, Google Drive)\n2. **Modifier** - Modifies files (Image Editor, Compressor)\n3. **Uploader** - Uploads files (Tus, XHR, AWS S3)\n4. **Presenter** - Shows UI (Dashboard, Progress Bar, Status Bar)\n5. **Orchestrator** - Manages workflow\n6. **Logger** - Handles logging\n\n### Key Packages\n- `@uppy/core` - Main Uppy class and plugin system\n- `@uppy/dashboard` - Complete UI with file management\n- `@uppy/companion` - Server-side component for remote providers\n- `@uppy/companion-client` - Client for communicating with Companion\n- `@uppy/utils` - Shared utilities\n- `@uppy/components` - Headless Preact components (with framework wrappers)\n\n## Build System\n\n### Turbo Configuration\nThe build system uses Turbo (turbo.json) for task orchestration:\n- Builds have dependency ordering (`dependsOn: [\"^build\"]`)\n- TypeScript builds output to `lib/` and `dist/` directories\n- CSS builds process SCSS files to CSS\n- Special handling for the main `uppy` package bundle\n\n### TypeScript Configuration\n- Shared config in `tsconfig.shared.json`\n- Individual packages have `tsconfig.json` and `tsconfig.build.json`\n- Build outputs include declaration files (.d.ts) and source maps\n\n## Code Standards\n\n### Linting and Formatting\n- **Biome** is used for linting and formatting (replaces ESLint/Prettier)\n- Configuration in `biome.json`\n- Use single quotes, semicolons as needed\n- 2-space indentation\n\n### Framework Integration\n- **Preact** for UI components with framework wrappers generated for React, Vue, Svelte\n- **TypeScript** throughout the codebase\n- Components in `@uppy/components` use Tailwind CSS with `uppy:` prefix\n\n### Plugin Development\n- All plugins extend `BasePlugin` or `UIPlugin`\n- Plugins must have unique IDs and specify their type\n- State management through Uppy's store system\n- Event-driven architecture using namespace-emitter\n\n## Testing\n\n### Test Framework\n- **Vitest** for unit tests (migrated from Jest)\n- **Vitest Browser Mode** for browser testing (migrated from Cypress)\n- Unit tests use `.test.{ts,tsx}` extensions and browser tests `.browser.test.{ts,tsx}`\n\n### Running Tests\n- Tests run in parallel across packages via Turbo\n- Examples also include tests (React, Vue, SvelteKit examples)\n- Use `yarn test` for development\n\n## Companion Server\n\nThe Companion server enables integration with remote file sources:\n- Handles OAuth flows for providers like Google Drive, Dropbox\n- Proxies file downloads to avoid CORS issues\n- Provides search functionality for providers\n- Located in `packages/@uppy/companion/`\n\n## Important Notes\n\n- Never commit sensitive information (API keys, tokens)\n- Follow existing code conventions and patterns within each package\n- Use the `@uppy/utils` package for shared functionality\n- UI components should be accessible and support internationalization\n- Always run `yarn check` and `yarn typecheck` before committing\n- When adding a new component to `@uppy/components`, you have to run `yarn migrate:components` from root.\n  This is not needed for changing existing components.\n","category":"root","tokens":1256}]}