{"owner":"ferdium","repo":"ferdium-app","hasSkills":true,"totalSkillsCount":1,"totalTokensCount":1312,"categories":["claude-rule"],"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## Project Overview\n\nFerdium is an Electron desktop app that aggregates messaging services (Slack, WhatsApp, Gmail, etc.) into a single window. It's a hard fork of Franz with no restrictions. Uses Electron + React + MobX + TypeScript with an embedded AdonisJS internal server.\n\n## Essential Commands\n\n```bash\npnpm install              # Install dependencies (requires Node 24.20.0, pnpm 12.3.4)\npnpm dev                  # Start esbuild in watch mode (serves on http://127.0.0.1:8080)\npnpm start                # Launch Electron with built app (run after dev or build)\npnpm start:all-dev        # Dev + Electron together (waits for dev server, then launches)\npnpm debug                # Same as start:all-dev but with DEBUG=Ferdium:* logging\n\npnpm test                 # Run Jest tests with coverage\npnpm test:watch           # Jest in watch mode\npnpm test -- --testPathPattern=\"test/helpers\"  # Run specific test files\n\npnpm typecheck            # TypeScript type checking (tsc --noEmit)\npnpm lint                 # ESLint with zero warnings allowed (--max-warnings 0)\npnpm lint:fix             # ESLint with auto-fix + cache\npnpm prepare-code         # Full pre-commit check: typecheck + lint:fix + biome + prettier + translations\npnpm build                # Production build: esbuild + electron-builder\n```\n\n## Git Hooks\n\n- **pre-commit**: Runs `pnpm prepare-code` then `pnpm test` (skipped if node_modules missing)\n- **commit-msg**: Enforces [Conventional Commits](https://www.conventionalcommits.org/) via commitlint (e.g., `fix:`, `feat:`, `chore:`)\n\n## Architecture\n\n### Process Model (Electron)\n\n- **Main process** (`src/index.ts`): App lifecycle, window management, IPC handlers, deep linking, auto-updates, tray icon, global shortcuts\n- **Renderer process** (`src/app.tsx`): React UI with MobX state management and React Router\n\n### State Management (MobX)\n\nAll stores are in `src/stores/` and initialized together in `src/stores/index.ts`. Each store receives references to all other stores, the API layer, and actions:\n\n| Store | Purpose |\n|-------|---------|\n| `AppStore` | Global app state, timers, focus |\n| `ServicesStore` | Service instances lifecycle, unread counts |\n| `RecipesStore` | Available recipe templates |\n| `UserStore` | Authentication and user profile |\n| `SettingsStore` | App settings persistence |\n| `UIStore` | UI state (sidebar, theme) |\n| `FeaturesStore` | Feature flags |\n\nFeature-specific stores: `workspaceStore`, `communityRecipesStore`, `todosStore` (in `src/features/`)\n\n### API Layer\n\n`src/api/index.ts` creates the API interface with two backends:\n- **ServerApi** (`server`): Remote Ferdium server communication\n- **LocalApi** (`local`): Embedded AdonisJS server for offline/local-first operation\n\nIndividual API classes: `AppApi`, `ServicesApi`, `RecipesApi`, `UserApi`, `FeaturesApi`, `RecipePreviewsApi`\n\n### Recipe/Service System\n\n- **Recipe** (`src/models/Recipe.ts`): Template defining a service type (URL pattern, message capabilities, dark mode, custom user agent)\n- **Service** (`src/models/Service.ts`): Running instance of a recipe with its own WebView, partition isolation, observable state (unread counts, enabled/muted, notification settings)\n- Recipes are loaded from the `ferdium-recipes` git submodule into `recipes/`\n\n### Internal Server\n\n`src/internal-server/`: AdonisJS 5 backend with SQLite database running on localhost. Provides local API for offline functionality. Has its own controllers, models, migrations, and routes.\n\n### Feature Modules\n\nEach feature in `src/features/` is self-contained with its own store, components, and initialization:\n- `workspaces` - Service grouping\n- `todos` - Built-in todo functionality\n- `basicAuth` - HTTP basic auth handling\n- `quickSwitch` - Service switching (Cmd/Ctrl+K)\n- `serviceProxy` - Per-service proxy configuration\n- `appearance` - Theme/accent color management\n- `communityRecipes` - Community recipe browser\n\n### Key Directories\n\n- `src/components/` - React UI components (organized by feature area: auth, settings, services, layout)\n- `src/actions/` - MobX action dispatchers\n- `src/helpers/` - Utility functions (URL, validation, userAgent, i18n)\n- `src/themes/` - Theme configs (dark, default, legacy)\n- `src/i18n/` - Translations (managed via `pnpm manage-translations`)\n- `src/electron/` - Main process utilities (IPC API, Settings, deep linking)\n- `src/lib/` - System integrations (Menu, Tray, TouchBar, DBus)\n\n### Build System\n\nUses **esbuild** (`esbuild.mjs`) for bundling. Compiles TS/TSX to CommonJS, processes SCSS, copies static assets to `./build`. Packaging via **electron-builder** (`electron-builder.yml`) for macOS/Windows/Linux.\n\n### Styling\n\nSCSS files in `src/styles/`. MUI (Material-UI) 5 for component library. Emotion for CSS-in-JS. Themes defined in `src/themes/`.\n\n## Testing\n\nJest with `esbuild-runner/jest` transform. Tests in `src/` (colocated) and `test/` directories. Node test environment. Internal server tests currently skipped (see `jest.config.js`).\n\n## Code Quality\n\n- ESLint: Airbnb + TypeScript + React + Unicorn + Sonar configs. Zero warnings policy.\n- Biome: Secondary linter for import organization.\n- Prettier: Single quotes, arrow parens avoided.\n- TypeScript: Strict mode with decorators enabled (for MobX).\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## Project Overview\n\nFerdium is an Electron desktop app that aggregates messaging services (Slack, WhatsApp, Gmail, etc.) into a single window. It's a hard fork of Franz with no restrictions. Uses Electron + React + MobX + TypeScript with an embedded AdonisJS internal server.\n\n## Essential Commands\n\n```bash\npnpm install              # Install dependencies (requires Node 24.20.0, pnpm 12.3.4)\npnpm dev                  # Start esbuild in watch mode (serves on http://127.0.0.1:8080)\npnpm start                # Launch Electron with built app (run after dev or build)\npnpm start:all-dev        # Dev + Electron together (waits for dev server, then launches)\npnpm debug                # Same as start:all-dev but with DEBUG=Ferdium:* logging\n\npnpm test                 # Run Jest tests with coverage\npnpm test:watch           # Jest in watch mode\npnpm test -- --testPathPattern=\"test/helpers\"  # Run specific test files\n\npnpm typecheck            # TypeScript type checking (tsc --noEmit)\npnpm lint                 # ESLint with zero warnings allowed (--max-warnings 0)\npnpm lint:fix             # ESLint with auto-fix + cache\npnpm prepare-code         # Full pre-commit check: typecheck + lint:fix + biome + prettier + translations\npnpm build                # Production build: esbuild + electron-builder\n```\n\n## Git Hooks\n\n- **pre-commit**: Runs `pnpm prepare-code` then `pnpm test` (skipped if node_modules missing)\n- **commit-msg**: Enforces [Conventional Commits](https://www.conventionalcommits.org/) via commitlint (e.g., `fix:`, `feat:`, `chore:`)\n\n## Architecture\n\n### Process Model (Electron)\n\n- **Main process** (`src/index.ts`): App lifecycle, window management, IPC handlers, deep linking, auto-updates, tray icon, global shortcuts\n- **Renderer process** (`src/app.tsx`): React UI with MobX state management and React Router\n\n### State Management (MobX)\n\nAll stores are in `src/stores/` and initialized together in `src/stores/index.ts`. Each store receives references to all other stores, the API layer, and actions:\n\n| Store | Purpose |\n|-------|---------|\n| `AppStore` | Global app state, timers, focus |\n| `ServicesStore` | Service instances lifecycle, unread counts |\n| `RecipesStore` | Available recipe templates |\n| `UserStore` | Authentication and user profile |\n| `SettingsStore` | App settings persistence |\n| `UIStore` | UI state (sidebar, theme) |\n| `FeaturesStore` | Feature flags |\n\nFeature-specific stores: `workspaceStore`, `communityRecipesStore`, `todosStore` (in `src/features/`)\n\n### API Layer\n\n`src/api/index.ts` creates the API interface with two backends:\n- **ServerApi** (`server`): Remote Ferdium server communication\n- **LocalApi** (`local`): Embedded AdonisJS server for offline/local-first operation\n\nIndividual API classes: `AppApi`, `ServicesApi`, `RecipesApi`, `UserApi`, `FeaturesApi`, `RecipePreviewsApi`\n\n### Recipe/Service System\n\n- **Recipe** (`src/models/Recipe.ts`): Template defining a service type (URL pattern, message capabilities, dark mode, custom user agent)\n- **Service** (`src/models/Service.ts`): Running instance of a recipe with its own WebView, partition isolation, observable state (unread counts, enabled/muted, notification settings)\n- Recipes are loaded from the `ferdium-recipes` git submodule into `recipes/`\n\n### Internal Server\n\n`src/internal-server/`: AdonisJS 5 backend with SQLite database running on localhost. Provides local API for offline functionality. Has its own controllers, models, migrations, and routes.\n\n### Feature Modules\n\nEach feature in `src/features/` is self-contained with its own store, components, and initialization:\n- `workspaces` - Service grouping\n- `todos` - Built-in todo functionality\n- `basicAuth` - HTTP basic auth handling\n- `quickSwitch` - Service switching (Cmd/Ctrl+K)\n- `serviceProxy` - Per-service proxy configuration\n- `appearance` - Theme/accent color management\n- `communityRecipes` - Community recipe browser\n\n### Key Directories\n\n- `src/components/` - React UI components (organized by feature area: auth, settings, services, layout)\n- `src/actions/` - MobX action dispatchers\n- `src/helpers/` - Utility functions (URL, validation, userAgent, i18n)\n- `src/themes/` - Theme configs (dark, default, legacy)\n- `src/i18n/` - Translations (managed via `pnpm manage-translations`)\n- `src/electron/` - Main process utilities (IPC API, Settings, deep linking)\n- `src/lib/` - System integrations (Menu, Tray, TouchBar, DBus)\n\n### Build System\n\nUses **esbuild** (`esbuild.mjs`) for bundling. Compiles TS/TSX to CommonJS, processes SCSS, copies static assets to `./build`. Packaging via **electron-builder** (`electron-builder.yml`) for macOS/Windows/Linux.\n\n### Styling\n\nSCSS files in `src/styles/`. MUI (Material-UI) 5 for component library. Emotion for CSS-in-JS. Themes defined in `src/themes/`.\n\n## Testing\n\nJest with `esbuild-runner/jest` transform. Tests in `src/` (colocated) and `test/` directories. Node test environment. Internal server tests currently skipped (see `jest.config.js`).\n\n## Code Quality\n\n- ESLint: Airbnb + TypeScript + React + Unicorn + Sonar configs. Zero warnings policy.\n- Biome: Secondary linter for import organization.\n- Prettier: Single quotes, arrow parens avoided.\n- TypeScript: Strict mode with decorators enabled (for MobX).\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/ferdium/ferdium-app/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nFerdium is an Electron desktop app that aggregates messaging services (Slack, WhatsApp, Gmail, etc.) into a single window. It's a hard fork of Franz with no restrictions. Uses Electron + React + MobX + TypeScript with an embedded AdonisJS internal server.\n\n## Essential Commands\n\n```bash\npnpm install              # Install dependencies (requires Node 24.20.0, pnpm 12.3.4)\npnpm dev                  # Start esbuild in watch mode (serves on http://127.0.0.1:8080)\npnpm start                # Launch Electron with built app (run after dev or build)\npnpm start:all-dev        # Dev + Electron together (waits for dev server, then launches)\npnpm debug                # Same as start:all-dev but with DEBUG=Ferdium:* logging\n\npnpm test                 # Run Jest tests with coverage\npnpm test:watch           # Jest in watch mode\npnpm test -- --testPathPattern=\"test/helpers\"  # Run specific test files\n\npnpm typecheck            # TypeScript type checking (tsc --noEmit)\npnpm lint                 # ESLint with zero warnings allowed (--max-warnings 0)\npnpm lint:fix             # ESLint with auto-fix + cache\npnpm prepare-code         # Full pre-commit check: typecheck + lint:fix + biome + prettier + translations\npnpm build                # Production build: esbuild + electron-builder\n```\n\n## Git Hooks\n\n- **pre-commit**: Runs `pnpm prepare-code` then `pnpm test` (skipped if node_modules missing)\n- **commit-msg**: Enforces [Conventional Commits](https://www.conventionalcommits.org/) via commitlint (e.g., `fix:`, `feat:`, `chore:`)\n\n## Architecture\n\n### Process Model (Electron)\n\n- **Main process** (`src/index.ts`): App lifecycle, window management, IPC handlers, deep linking, auto-updates, tray icon, global shortcuts\n- **Renderer process** (`src/app.tsx`): React UI with MobX state management and React Router\n\n### State Management (MobX)\n\nAll stores are in `src/stores/` and initialized together in `src/stores/index.ts`. Each store receives references to all other stores, the API layer, and actions:\n\n| Store | Purpose |\n|-------|---------|\n| `AppStore` | Global app state, timers, focus |\n| `ServicesStore` | Service instances lifecycle, unread counts |\n| `RecipesStore` | Available recipe templates |\n| `UserStore` | Authentication and user profile |\n| `SettingsStore` | App settings persistence |\n| `UIStore` | UI state (sidebar, theme) |\n| `FeaturesStore` | Feature flags |\n\nFeature-specific stores: `workspaceStore`, `communityRecipesStore`, `todosStore` (in `src/features/`)\n\n### API Layer\n\n`src/api/index.ts` creates the API interface with two backends:\n- **ServerApi** (`server`): Remote Ferdium server communication\n- **LocalApi** (`local`): Embedded AdonisJS server for offline/local-first operation\n\nIndividual API classes: `AppApi`, `ServicesApi`, `RecipesApi`, `UserApi`, `FeaturesApi`, `RecipePreviewsApi`\n\n### Recipe/Service System\n\n- **Recipe** (`src/models/Recipe.ts`): Template defining a service type (URL pattern, message capabilities, dark mode, custom user agent)\n- **Service** (`src/models/Service.ts`): Running instance of a recipe with its own WebView, partition isolation, observable state (unread counts, enabled/muted, notification settings)\n- Recipes are loaded from the `ferdium-recipes` git submodule into `recipes/`\n\n### Internal Server\n\n`src/internal-server/`: AdonisJS 5 backend with SQLite database running on localhost. Provides local API for offline functionality. Has its own controllers, models, migrations, and routes.\n\n### Feature Modules\n\nEach feature in `src/features/` is self-contained with its own store, components, and initialization:\n- `workspaces` - Service grouping\n- `todos` - Built-in todo functionality\n- `basicAuth` - HTTP basic auth handling\n- `quickSwitch` - Service switching (Cmd/Ctrl+K)\n- `serviceProxy` - Per-service proxy configuration\n- `appearance` - Theme/accent color management\n- `communityRecipes` - Community recipe browser\n\n### Key Directories\n\n- `src/components/` - React UI components (organized by feature area: auth, settings, services, layout)\n- `src/actions/` - MobX action dispatchers\n- `src/helpers/` - Utility functions (URL, validation, userAgent, i18n)\n- `src/themes/` - Theme configs (dark, default, legacy)\n- `src/i18n/` - Translations (managed via `pnpm manage-translations`)\n- `src/electron/` - Main process utilities (IPC API, Settings, deep linking)\n- `src/lib/` - System integrations (Menu, Tray, TouchBar, DBus)\n\n### Build System\n\nUses **esbuild** (`esbuild.mjs`) for bundling. Compiles TS/TSX to CommonJS, processes SCSS, copies static assets to `./build`. Packaging via **electron-builder** (`electron-builder.yml`) for macOS/Windows/Linux.\n\n### Styling\n\nSCSS files in `src/styles/`. MUI (Material-UI) 5 for component library. Emotion for CSS-in-JS. Themes defined in `src/themes/`.\n\n## Testing\n\nJest with `esbuild-runner/jest` transform. Tests in `src/` (colocated) and `test/` directories. Node test environment. Internal server tests currently skipped (see `jest.config.js`).\n\n## Code Quality\n\n- ESLint: Airbnb + TypeScript + React + Unicorn + Sonar configs. Zero warnings policy.\n- Biome: Secondary linter for import organization.\n- Prettier: Single quotes, arrow parens avoided.\n- TypeScript: Strict mode with decorators enabled (for MobX).\n","isInternal":false,"tokens":1312,"sizeBytes":5385}],"systemPromptSnippet":"<yakaai_skills repo=\"ferdium/ferdium-app\">\n<!-- File: CLAUDE.md (Tokens: ~1312 | Category: claude-rule) -->\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nFerdium is an Electron desktop app that aggregates messaging services (Slack, WhatsApp, Gmail, etc.) into a single window. It's a hard fork of Franz with no restrictions. Uses Electron + React + MobX + TypeScript with an embedded AdonisJS internal server.\n\n## Essential Commands\n\n```bash\npnpm install              # Install dependencies (requires Node 24.20.0, pnpm 12.3.4)\npnpm dev                  # Start esbuild in watch mode (serves on http://127.0.0.1:8080)\npnpm start                # Launch Electron with built app (run after dev or build)\npnpm start:all-dev        # Dev + Electron together (waits for dev server, then launches)\npnpm debug                # Same as start:all-dev but with DEBUG=Ferdium:* logging\n\npnpm test                 # Run Jest tests with coverage\npnpm test:watch           # Jest in watch mode\npnpm test -- --testPathPattern=\"test/helpers\"  # Run specific test files\n\npnpm typecheck            # TypeScript type checking (tsc --noEmit)\npnpm lint                 # ESLint with zero warnings allowed (--max-warnings 0)\npnpm lint:fix             # ESLint with auto-fix + cache\npnpm prepare-code         # Full pre-commit check: typecheck + lint:fix + biome + prettier + translations\npnpm build                # Production build: esbuild + electron-builder\n```\n\n## Git Hooks\n\n- **pre-commit**: Runs `pnpm prepare-code` then `pnpm test` (skipped if node_modules missing)\n- **commit-msg**: Enforces [Conventional Commits](https://www.conventionalcommits.org/) via commitlint (e.g., `fix:`, `feat:`, `chore:`)\n\n## Architecture\n\n### Process Model (Electron)\n\n- **Main process** (`src/index.ts`): App lifecycle, window management, IPC handlers, deep linking, auto-updates, tray icon, global shortcuts\n- **Renderer process** (`src/app.tsx`): React UI with MobX state management and React Router\n\n### State Management (MobX)\n\nAll stores are in `src/stores/` and initialized together in `src/stores/index.ts`. Each store receives references to all other stores, the API layer, and actions:\n\n| Store | Purpose |\n|-------|---------|\n| `AppStore` | Global app state, timers, focus |\n| `ServicesStore` | Service instances lifecycle, unread counts |\n| `RecipesStore` | Available recipe templates |\n| `UserStore` | Authentication and user profile |\n| `SettingsStore` | App settings persistence |\n| `UIStore` | UI state (sidebar, theme) |\n| `FeaturesStore` | Feature flags |\n\nFeature-specific stores: `workspaceStore`, `communityRecipesStore`, `todosStore` (in `src/features/`)\n\n### API Layer\n\n`src/api/index.ts` creates the API interface with two backends:\n- **ServerApi** (`server`): Remote Ferdium server communication\n- **LocalApi** (`local`): Embedded AdonisJS server for offline/local-first operation\n\nIndividual API classes: `AppApi`, `ServicesApi`, `RecipesApi`, `UserApi`, `FeaturesApi`, `RecipePreviewsApi`\n\n### Recipe/Service System\n\n- **Recipe** (`src/models/Recipe.ts`): Template defining a service type (URL pattern, message capabilities, dark mode, custom user agent)\n- **Service** (`src/models/Service.ts`): Running instance of a recipe with its own WebView, partition isolation, observable state (unread counts, enabled/muted, notification settings)\n- Recipes are loaded from the `ferdium-recipes` git submodule into `recipes/`\n\n### Internal Server\n\n`src/internal-server/`: AdonisJS 5 backend with SQLite database running on localhost. Provides local API for offline functionality. Has its own controllers, models, migrations, and routes.\n\n### Feature Modules\n\nEach feature in `src/features/` is self-contained with its own store, components, and initialization:\n- `workspaces` - Service grouping\n- `todos` - Built-in todo functionality\n- `basicAuth` - HTTP basic auth handling\n- `quickSwitch` - Service switching (Cmd/Ctrl+K)\n- `serviceProxy` - Per-service proxy configuration\n- `appearance` - Theme/accent color management\n- `communityRecipes` - Community recipe browser\n\n### Key Directories\n\n- `src/components/` - React UI components (organized by feature area: auth, settings, services, layout)\n- `src/actions/` - MobX action dispatchers\n- `src/helpers/` - Utility functions (URL, validation, userAgent, i18n)\n- `src/themes/` - Theme configs (dark, default, legacy)\n- `src/i18n/` - Translations (managed via `pnpm manage-translations`)\n- `src/electron/` - Main process utilities (IPC API, Settings, deep linking)\n- `src/lib/` - System integrations (Menu, Tray, TouchBar, DBus)\n\n### Build System\n\nUses **esbuild** (`esbuild.mjs`) for bundling. Compiles TS/TSX to CommonJS, processes SCSS, copies static assets to `./build`. Packaging via **electron-builder** (`electron-builder.yml`) for macOS/Windows/Linux.\n\n### Styling\n\nSCSS files in `src/styles/`. MUI (Material-UI) 5 for component library. Emotion for CSS-in-JS. Themes defined in `src/themes/`.\n\n## Testing\n\nJest with `esbuild-runner/jest` transform. Tests in `src/` (colocated) and `test/` directories. Node test environment. Internal server tests currently skipped (see `jest.config.js`).\n\n## Code Quality\n\n- ESLint: Airbnb + TypeScript + React + Unicorn + Sonar configs. Zero warnings policy.\n- Biome: Secondary linter for import organization.\n- Prettier: Single quotes, arrow parens avoided.\n- TypeScript: Strict mode with decorators enabled (for MobX).\n</yakaai_skills>"}