{"owner":"liam-hq","repo":"liam","hasSkills":true,"totalSkillsCount":5,"totalTokensCount":2434,"categories":["root-instruction","claude-rule","mcp-config","marketplace","plugin-manifest"],"hasMcp":true,"mcpConfig":{"mcpServers":{"liam":{"command":"npx","args":["-y","@modelcontextprotocol/server-liam"]}}},"found":["AGENTS.md","CLAUDE.md",".cursor/mcp.json",".claude-plugin/marketplace.json",".claude-plugin/plugin.json"],"skills":{"AGENTS.md":"# Repository Guidelines\n\n## Project Structure & Modules\n- frontend/apps/*: Next.js apps (e.g., `@liam-hq/app`, `@liam-hq/docs`).\n- frontend/packages/*: Shared libraries and tools (e.g., `schema`, `erd-core`, `cli`, `ui`).\n- frontend/internal-packages/*: Infra and tooling (`e2e`, `configs`, `storybook`).\n- assets/: Images and media. docs/: Documentation. scripts/: Repo utilities.\n\n## Build, Test, and Development\n- Install: `pnpm install`\n- All apps/packages (Turbo):\n  - Dev: `pnpm dev` (or one app: `pnpm -F @liam-hq/app dev`)\n  - Build: `pnpm build`\n  - Test (unit): `pnpm test`\n  - E2E (Playwright): `pnpm test:e2e`\n  - Coverage: `pnpm test:coverage`\n- App-only examples:\n  - Run Next dev: `pnpm -F @liam-hq/app dev:next`\n  - Build Next: `pnpm -F @liam-hq/app build`\n\n## Coding Style & Naming\n- Language: TypeScript/TSX; React components in PascalCase (e.g., `App.tsx`); utilities in camelCase (e.g., `mergeSchema.ts`).\n- CSS Modules: `*.module.css` with typed CSS via `typed-css-modules`.\n- Lint/Format: Biome and ESLint. Run `pnpm fmt` and `pnpm lint`. Pre-commit hooks run `pnpm lint` (see `lefthook.yml`).\n\n## Testing Guidelines\n- Unit tests: Vitest. Place near source as `*.test.ts(x)` or in `__tests__/`.\n- E2E tests: Playwright in `frontend/internal-packages/e2e`.\n- Commands: `pnpm test` for unit, `pnpm test:e2e` for Playwright, `pnpm test:coverage` for V8 coverage.\n\n## Commit & Pull Requests\n- Commit style: Conventional Commits (e.g., `feat:`, `fix:`, `chore(deps): ...`).\n- Before pushing: `pnpm fmt && pnpm lint && pnpm test`.\n- PRs: clear description, linked issues, screenshots for UI changes, and note any env or migration impacts.\n- Versioning: If you change a publishable package, add a changeset: `pnpm changeset`.\n\n## Security & Configuration\n- Environment: use `.env`/`.env.local` (created automatically by `pnpm prebuild`). Never commit secrets.\n- Sync Vercel envs (optional): `pnpm vercel:env-pull` and link with `pnpm vercel:link`.\n- Common vars: `NEXT_PUBLIC_*`, Sentry keys, and job runner tokens (see `turbo.json` env list).\n\n## Tips\n- Target a single package with `pnpm -F <package-name> <script>`.\n- Use Turbo filters when running large tasks locally for faster feedback.\n","CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Essential Commands\n\n- pnpm dev - Start dev servers\n- cd frontend/apps/app && pnpm dev - Start dev server for specific package\n- pnpm build - Build all packages\n- pnpm lint - Run linting and formatting\n- pnpm test - Run tests\n- pnpm fmt - Run format code\n\n### App-specific Commands\n\n```bash\n# Run only the main web app (port 3001)\npnpm --filter @liam-hq/app dev\n\n# Format code\npnpm --filter @liam-hq/schema fmt\n\n# Test\npnpm --filter @liam-hq/schema test\n```\n\n## Architecture\n\n### Monorepo Structure\n\n#### Applications\n- **frontend/apps/app** - Main Next.js web application (`@liam-hq/app`)\n- **frontend/apps/docs** - Documentation site (`@liam-hq/docs`)\n\n#### Public Packages\n- **frontend/packages/cli** - Command-line tool (`@liam-hq/cli`)\n- **frontend/packages/erd-core** - Core ERD visualization (`@liam-hq/erd-core`)\n- **frontend/packages/schema** - Database schema parser (`@liam-hq/schema`)\n- **frontend/packages/ui** - UI component library (`@liam-hq/ui`)\n\n#### Internal Packages\n- **frontend/internal-packages/mcp-server** - MCP server implementation (`@liam-hq/mcp-server`)\n\n\n### Key Technologies\n\n- **Frontend**: React 19, Next.js 15, TypeScript\n- **Styling**: CSS Modules with typed definitions\n- **Visualization**: @xyflow/react (React Flow)\n- **Validation**: Valibot for runtime type validation\n- **Build**: Turborepo, pnpm workspaces\n\n## Development Guidelines\n\n### Core Principle: **Less is more**\n\nKeep every implementation as small and obvious as possible.\n\n- **Let the code speak** – If you need a multi-paragraph comment, refactor until intent is obvious\n- **Delete fearlessly, Git remembers** – Cut dead code, stale logic, and verbose history\n\n### TypeScript Standards\n\n- Use runtime type validation with `valibot` for external data validation\n- Use early returns for readability\n\n### Code Editing\n\n- Write simple, direct code without backward compatibility concerns - update all call sites together\n\n```typescript\n// ❌ Bad: Optional parameter leads to conditional logic\nfunction saveUser(data: UserData, userId?: string) {\n  const id = userId || generateId(); // Unnecessary fallback logic\n  if (!userId) console.warn(\"Using generated ID\"); // Extra handling\n  return db.save(id, data);\n}\n\n// ✅ Good: Required parameter, update all callers\nfunction saveUser(data: UserData, userId: string) {\n  return db.save(userId, data); // Simple and clear\n}\n```\n\n### Component Patterns\n\n- Use named exports only (no default exports)\n- Event handlers should be prefixed with \"handle\" (e.g., `handleClick`)\n- Use CSS Modules for all styling\n- Import UI components from `@liam-hq/ui` when available\n- Import icons from `@liam-hq/ui`\n\n### File Organization\n\n- Don't code directly in `page.tsx` - create separate page components\n- Follow existing import patterns and tsconfig paths\n- Use consts instead of functions: `const toggle = () => {}`\n\n### Data Fetching\n\n- Server Components for server-side data fetching\n- Client-side fetching only when necessary\n- Align data fetching responsibilities with component roles\n- Use Server Actions for all data mutations (create, update, delete operations)\n\n### CSS\n\n- Use CSS Variables from `@liam-hq/ui` package\n- Generate CSS type definitions with `pnpm gen:css`\n- Use CSS variables according to their intended purpose. Spacing variables should be used exclusively for margins and padding, while height and width specifications should use appropriate units (rem, px, etc.)\n\n### Testing\n\n- Follow principles in @docs/test-principles.md\n\n## Pull Requests\n\nWhen creating pull requests, refer to @.github/pull_request_template.md for the required information and format.\n",".cursor/mcp.json":"# Model Context Protocol (MCP) Configuration\n\nPath: `.cursor/mcp.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.cursor/mcp.json)",".claude-plugin/marketplace.json":"# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/marketplace.json)",".claude-plugin/plugin.json":"# claude-plugin Plugin Manifest\n\nPath: `.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/plugin.json)"},"files":{"AGENTS.md":"# Repository Guidelines\n\n## Project Structure & Modules\n- frontend/apps/*: Next.js apps (e.g., `@liam-hq/app`, `@liam-hq/docs`).\n- frontend/packages/*: Shared libraries and tools (e.g., `schema`, `erd-core`, `cli`, `ui`).\n- frontend/internal-packages/*: Infra and tooling (`e2e`, `configs`, `storybook`).\n- assets/: Images and media. docs/: Documentation. scripts/: Repo utilities.\n\n## Build, Test, and Development\n- Install: `pnpm install`\n- All apps/packages (Turbo):\n  - Dev: `pnpm dev` (or one app: `pnpm -F @liam-hq/app dev`)\n  - Build: `pnpm build`\n  - Test (unit): `pnpm test`\n  - E2E (Playwright): `pnpm test:e2e`\n  - Coverage: `pnpm test:coverage`\n- App-only examples:\n  - Run Next dev: `pnpm -F @liam-hq/app dev:next`\n  - Build Next: `pnpm -F @liam-hq/app build`\n\n## Coding Style & Naming\n- Language: TypeScript/TSX; React components in PascalCase (e.g., `App.tsx`); utilities in camelCase (e.g., `mergeSchema.ts`).\n- CSS Modules: `*.module.css` with typed CSS via `typed-css-modules`.\n- Lint/Format: Biome and ESLint. Run `pnpm fmt` and `pnpm lint`. Pre-commit hooks run `pnpm lint` (see `lefthook.yml`).\n\n## Testing Guidelines\n- Unit tests: Vitest. Place near source as `*.test.ts(x)` or in `__tests__/`.\n- E2E tests: Playwright in `frontend/internal-packages/e2e`.\n- Commands: `pnpm test` for unit, `pnpm test:e2e` for Playwright, `pnpm test:coverage` for V8 coverage.\n\n## Commit & Pull Requests\n- Commit style: Conventional Commits (e.g., `feat:`, `fix:`, `chore(deps): ...`).\n- Before pushing: `pnpm fmt && pnpm lint && pnpm test`.\n- PRs: clear description, linked issues, screenshots for UI changes, and note any env or migration impacts.\n- Versioning: If you change a publishable package, add a changeset: `pnpm changeset`.\n\n## Security & Configuration\n- Environment: use `.env`/`.env.local` (created automatically by `pnpm prebuild`). Never commit secrets.\n- Sync Vercel envs (optional): `pnpm vercel:env-pull` and link with `pnpm vercel:link`.\n- Common vars: `NEXT_PUBLIC_*`, Sentry keys, and job runner tokens (see `turbo.json` env list).\n\n## Tips\n- Target a single package with `pnpm -F <package-name> <script>`.\n- Use Turbo filters when running large tasks locally for faster feedback.\n","CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Essential Commands\n\n- pnpm dev - Start dev servers\n- cd frontend/apps/app && pnpm dev - Start dev server for specific package\n- pnpm build - Build all packages\n- pnpm lint - Run linting and formatting\n- pnpm test - Run tests\n- pnpm fmt - Run format code\n\n### App-specific Commands\n\n```bash\n# Run only the main web app (port 3001)\npnpm --filter @liam-hq/app dev\n\n# Format code\npnpm --filter @liam-hq/schema fmt\n\n# Test\npnpm --filter @liam-hq/schema test\n```\n\n## Architecture\n\n### Monorepo Structure\n\n#### Applications\n- **frontend/apps/app** - Main Next.js web application (`@liam-hq/app`)\n- **frontend/apps/docs** - Documentation site (`@liam-hq/docs`)\n\n#### Public Packages\n- **frontend/packages/cli** - Command-line tool (`@liam-hq/cli`)\n- **frontend/packages/erd-core** - Core ERD visualization (`@liam-hq/erd-core`)\n- **frontend/packages/schema** - Database schema parser (`@liam-hq/schema`)\n- **frontend/packages/ui** - UI component library (`@liam-hq/ui`)\n\n#### Internal Packages\n- **frontend/internal-packages/mcp-server** - MCP server implementation (`@liam-hq/mcp-server`)\n\n\n### Key Technologies\n\n- **Frontend**: React 19, Next.js 15, TypeScript\n- **Styling**: CSS Modules with typed definitions\n- **Visualization**: @xyflow/react (React Flow)\n- **Validation**: Valibot for runtime type validation\n- **Build**: Turborepo, pnpm workspaces\n\n## Development Guidelines\n\n### Core Principle: **Less is more**\n\nKeep every implementation as small and obvious as possible.\n\n- **Let the code speak** – If you need a multi-paragraph comment, refactor until intent is obvious\n- **Delete fearlessly, Git remembers** – Cut dead code, stale logic, and verbose history\n\n### TypeScript Standards\n\n- Use runtime type validation with `valibot` for external data validation\n- Use early returns for readability\n\n### Code Editing\n\n- Write simple, direct code without backward compatibility concerns - update all call sites together\n\n```typescript\n// ❌ Bad: Optional parameter leads to conditional logic\nfunction saveUser(data: UserData, userId?: string) {\n  const id = userId || generateId(); // Unnecessary fallback logic\n  if (!userId) console.warn(\"Using generated ID\"); // Extra handling\n  return db.save(id, data);\n}\n\n// ✅ Good: Required parameter, update all callers\nfunction saveUser(data: UserData, userId: string) {\n  return db.save(userId, data); // Simple and clear\n}\n```\n\n### Component Patterns\n\n- Use named exports only (no default exports)\n- Event handlers should be prefixed with \"handle\" (e.g., `handleClick`)\n- Use CSS Modules for all styling\n- Import UI components from `@liam-hq/ui` when available\n- Import icons from `@liam-hq/ui`\n\n### File Organization\n\n- Don't code directly in `page.tsx` - create separate page components\n- Follow existing import patterns and tsconfig paths\n- Use consts instead of functions: `const toggle = () => {}`\n\n### Data Fetching\n\n- Server Components for server-side data fetching\n- Client-side fetching only when necessary\n- Align data fetching responsibilities with component roles\n- Use Server Actions for all data mutations (create, update, delete operations)\n\n### CSS\n\n- Use CSS Variables from `@liam-hq/ui` package\n- Generate CSS type definitions with `pnpm gen:css`\n- Use CSS variables according to their intended purpose. Spacing variables should be used exclusively for margins and padding, while height and width specifications should use appropriate units (rem, px, etc.)\n\n### Testing\n\n- Follow principles in @docs/test-principles.md\n\n## Pull Requests\n\nWhen creating pull requests, refer to @.github/pull_request_template.md for the required information and format.\n",".cursor/mcp.json":"# Model Context Protocol (MCP) Configuration\n\nPath: `.cursor/mcp.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.cursor/mcp.json)",".claude-plugin/marketplace.json":"# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/marketplace.json)",".claude-plugin/plugin.json":"# claude-plugin Plugin Manifest\n\nPath: `.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/plugin.json)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/liam-hq/liam/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Repository Guidelines\n\n## Project Structure & Modules\n- frontend/apps/*: Next.js apps (e.g., `@liam-hq/app`, `@liam-hq/docs`).\n- frontend/packages/*: Shared libraries and tools (e.g., `schema`, `erd-core`, `cli`, `ui`).\n- frontend/internal-packages/*: Infra and tooling (`e2e`, `configs`, `storybook`).\n- assets/: Images and media. docs/: Documentation. scripts/: Repo utilities.\n\n## Build, Test, and Development\n- Install: `pnpm install`\n- All apps/packages (Turbo):\n  - Dev: `pnpm dev` (or one app: `pnpm -F @liam-hq/app dev`)\n  - Build: `pnpm build`\n  - Test (unit): `pnpm test`\n  - E2E (Playwright): `pnpm test:e2e`\n  - Coverage: `pnpm test:coverage`\n- App-only examples:\n  - Run Next dev: `pnpm -F @liam-hq/app dev:next`\n  - Build Next: `pnpm -F @liam-hq/app build`\n\n## Coding Style & Naming\n- Language: TypeScript/TSX; React components in PascalCase (e.g., `App.tsx`); utilities in camelCase (e.g., `mergeSchema.ts`).\n- CSS Modules: `*.module.css` with typed CSS via `typed-css-modules`.\n- Lint/Format: Biome and ESLint. Run `pnpm fmt` and `pnpm lint`. Pre-commit hooks run `pnpm lint` (see `lefthook.yml`).\n\n## Testing Guidelines\n- Unit tests: Vitest. Place near source as `*.test.ts(x)` or in `__tests__/`.\n- E2E tests: Playwright in `frontend/internal-packages/e2e`.\n- Commands: `pnpm test` for unit, `pnpm test:e2e` for Playwright, `pnpm test:coverage` for V8 coverage.\n\n## Commit & Pull Requests\n- Commit style: Conventional Commits (e.g., `feat:`, `fix:`, `chore(deps): ...`).\n- Before pushing: `pnpm fmt && pnpm lint && pnpm test`.\n- PRs: clear description, linked issues, screenshots for UI changes, and note any env or migration impacts.\n- Versioning: If you change a publishable package, add a changeset: `pnpm changeset`.\n\n## Security & Configuration\n- Environment: use `.env`/`.env.local` (created automatically by `pnpm prebuild`). Never commit secrets.\n- Sync Vercel envs (optional): `pnpm vercel:env-pull` and link with `pnpm vercel:link`.\n- Common vars: `NEXT_PUBLIC_*`, Sentry keys, and job runner tokens (see `turbo.json` env list).\n\n## Tips\n- Target a single package with `pnpm -F <package-name> <script>`.\n- Use Turbo filters when running large tasks locally for faster feedback.\n","isInternal":false,"tokens":652,"sizeBytes":2208},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/liam-hq/liam/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## Essential Commands\n\n- pnpm dev - Start dev servers\n- cd frontend/apps/app && pnpm dev - Start dev server for specific package\n- pnpm build - Build all packages\n- pnpm lint - Run linting and formatting\n- pnpm test - Run tests\n- pnpm fmt - Run format code\n\n### App-specific Commands\n\n```bash\n# Run only the main web app (port 3001)\npnpm --filter @liam-hq/app dev\n\n# Format code\npnpm --filter @liam-hq/schema fmt\n\n# Test\npnpm --filter @liam-hq/schema test\n```\n\n## Architecture\n\n### Monorepo Structure\n\n#### Applications\n- **frontend/apps/app** - Main Next.js web application (`@liam-hq/app`)\n- **frontend/apps/docs** - Documentation site (`@liam-hq/docs`)\n\n#### Public Packages\n- **frontend/packages/cli** - Command-line tool (`@liam-hq/cli`)\n- **frontend/packages/erd-core** - Core ERD visualization (`@liam-hq/erd-core`)\n- **frontend/packages/schema** - Database schema parser (`@liam-hq/schema`)\n- **frontend/packages/ui** - UI component library (`@liam-hq/ui`)\n\n#### Internal Packages\n- **frontend/internal-packages/mcp-server** - MCP server implementation (`@liam-hq/mcp-server`)\n\n\n### Key Technologies\n\n- **Frontend**: React 19, Next.js 15, TypeScript\n- **Styling**: CSS Modules with typed definitions\n- **Visualization**: @xyflow/react (React Flow)\n- **Validation**: Valibot for runtime type validation\n- **Build**: Turborepo, pnpm workspaces\n\n## Development Guidelines\n\n### Core Principle: **Less is more**\n\nKeep every implementation as small and obvious as possible.\n\n- **Let the code speak** – If you need a multi-paragraph comment, refactor until intent is obvious\n- **Delete fearlessly, Git remembers** – Cut dead code, stale logic, and verbose history\n\n### TypeScript Standards\n\n- Use runtime type validation with `valibot` for external data validation\n- Use early returns for readability\n\n### Code Editing\n\n- Write simple, direct code without backward compatibility concerns - update all call sites together\n\n```typescript\n// ❌ Bad: Optional parameter leads to conditional logic\nfunction saveUser(data: UserData, userId?: string) {\n  const id = userId || generateId(); // Unnecessary fallback logic\n  if (!userId) console.warn(\"Using generated ID\"); // Extra handling\n  return db.save(id, data);\n}\n\n// ✅ Good: Required parameter, update all callers\nfunction saveUser(data: UserData, userId: string) {\n  return db.save(userId, data); // Simple and clear\n}\n```\n\n### Component Patterns\n\n- Use named exports only (no default exports)\n- Event handlers should be prefixed with \"handle\" (e.g., `handleClick`)\n- Use CSS Modules for all styling\n- Import UI components from `@liam-hq/ui` when available\n- Import icons from `@liam-hq/ui`\n\n### File Organization\n\n- Don't code directly in `page.tsx` - create separate page components\n- Follow existing import patterns and tsconfig paths\n- Use consts instead of functions: `const toggle = () => {}`\n\n### Data Fetching\n\n- Server Components for server-side data fetching\n- Client-side fetching only when necessary\n- Align data fetching responsibilities with component roles\n- Use Server Actions for all data mutations (create, update, delete operations)\n\n### CSS\n\n- Use CSS Variables from `@liam-hq/ui` package\n- Generate CSS type definitions with `pnpm gen:css`\n- Use CSS variables according to their intended purpose. Spacing variables should be used exclusively for margins and padding, while height and width specifications should use appropriate units (rem, px, etc.)\n\n### Testing\n\n- Follow principles in @docs/test-principles.md\n\n## Pull Requests\n\nWhen creating pull requests, refer to @.github/pull_request_template.md for the required information and format.\n","isInternal":false,"tokens":882,"sizeBytes":3740},{"name":"marketplace.json","path":".claude-plugin/marketplace.json","rawUrl":"https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/marketplace.json","title":"Claude Plugin Marketplace Catalog","category":"marketplace","format":"json","content":"# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/marketplace.json)","tokens":300,"sizeBytes":191},{"name":"plugin.json","path":".claude-plugin/plugin.json","rawUrl":"https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/plugin.json","title":"claude-plugin Plugin Manifest","category":"plugin-manifest","format":"json","content":"# claude-plugin Plugin Manifest\n\nPath: `.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/plugin.json)","tokens":300,"sizeBytes":177},{"name":"mcp.json","path":".cursor/mcp.json","rawUrl":"https://raw.githubusercontent.com/liam-hq/liam/HEAD/.cursor/mcp.json","title":"Model Context Protocol (MCP) Configuration","category":"mcp-config","format":"json","content":"# Model Context Protocol (MCP) Configuration\n\nPath: `.cursor/mcp.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.cursor/mcp.json)","tokens":300,"sizeBytes":170}],"systemPromptSnippet":"<yakaai_skills repo=\"liam-hq/liam\">\n<!-- File: AGENTS.md (Tokens: ~652 | Category: root-instruction) -->\n# Repository Guidelines\n\n## Project Structure & Modules\n- frontend/apps/*: Next.js apps (e.g., `@liam-hq/app`, `@liam-hq/docs`).\n- frontend/packages/*: Shared libraries and tools (e.g., `schema`, `erd-core`, `cli`, `ui`).\n- frontend/internal-packages/*: Infra and tooling (`e2e`, `configs`, `storybook`).\n- assets/: Images and media. docs/: Documentation. scripts/: Repo utilities.\n\n## Build, Test, and Development\n- Install: `pnpm install`\n- All apps/packages (Turbo):\n  - Dev: `pnpm dev` (or one app: `pnpm -F @liam-hq/app dev`)\n  - Build: `pnpm build`\n  - Test (unit): `pnpm test`\n  - E2E (Playwright): `pnpm test:e2e`\n  - Coverage: `pnpm test:coverage`\n- App-only examples:\n  - Run Next dev: `pnpm -F @liam-hq/app dev:next`\n  - Build Next: `pnpm -F @liam-hq/app build`\n\n## Coding Style & Naming\n- Language: TypeScript/TSX; React components in PascalCase (e.g., `App.tsx`); utilities in camelCase (e.g., `mergeSchema.ts`).\n- CSS Modules: `*.module.css` with typed CSS via `typed-css-modules`.\n- Lint/Format: Biome and ESLint. Run `pnpm fmt` and `pnpm lint`. Pre-commit hooks run `pnpm lint` (see `lefthook.yml`).\n\n## Testing Guidelines\n- Unit tests: Vitest. Place near source as `*.test.ts(x)` or in `__tests__/`.\n- E2E tests: Playwright in `frontend/internal-packages/e2e`.\n- Commands: `pnpm test` for unit, `pnpm test:e2e` for Playwright, `pnpm test:coverage` for V8 coverage.\n\n## Commit & Pull Requests\n- Commit style: Conventional Commits (e.g., `feat:`, `fix:`, `chore(deps): ...`).\n- Before pushing: `pnpm fmt && pnpm lint && pnpm test`.\n- PRs: clear description, linked issues, screenshots for UI changes, and note any env or migration impacts.\n- Versioning: If you change a publishable package, add a changeset: `pnpm changeset`.\n\n## Security & Configuration\n- Environment: use `.env`/`.env.local` (created automatically by `pnpm prebuild`). Never commit secrets.\n- Sync Vercel envs (optional): `pnpm vercel:env-pull` and link with `pnpm vercel:link`.\n- Common vars: `NEXT_PUBLIC_*`, Sentry keys, and job runner tokens (see `turbo.json` env list).\n\n## Tips\n- Target a single package with `pnpm -F <package-name> <script>`.\n- Use Turbo filters when running large tasks locally for faster feedback.\n\n<!-- File: CLAUDE.md (Tokens: ~882 | 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## Essential Commands\n\n- pnpm dev - Start dev servers\n- cd frontend/apps/app && pnpm dev - Start dev server for specific package\n- pnpm build - Build all packages\n- pnpm lint - Run linting and formatting\n- pnpm test - Run tests\n- pnpm fmt - Run format code\n\n### App-specific Commands\n\n```bash\n# Run only the main web app (port 3001)\npnpm --filter @liam-hq/app dev\n\n# Format code\npnpm --filter @liam-hq/schema fmt\n\n# Test\npnpm --filter @liam-hq/schema test\n```\n\n## Architecture\n\n### Monorepo Structure\n\n#### Applications\n- **frontend/apps/app** - Main Next.js web application (`@liam-hq/app`)\n- **frontend/apps/docs** - Documentation site (`@liam-hq/docs`)\n\n#### Public Packages\n- **frontend/packages/cli** - Command-line tool (`@liam-hq/cli`)\n- **frontend/packages/erd-core** - Core ERD visualization (`@liam-hq/erd-core`)\n- **frontend/packages/schema** - Database schema parser (`@liam-hq/schema`)\n- **frontend/packages/ui** - UI component library (`@liam-hq/ui`)\n\n#### Internal Packages\n- **frontend/internal-packages/mcp-server** - MCP server implementation (`@liam-hq/mcp-server`)\n\n\n### Key Technologies\n\n- **Frontend**: React 19, Next.js 15, TypeScript\n- **Styling**: CSS Modules with typed definitions\n- **Visualization**: @xyflow/react (React Flow)\n- **Validation**: Valibot for runtime type validation\n- **Build**: Turborepo, pnpm workspaces\n\n## Development Guidelines\n\n### Core Principle: **Less is more**\n\nKeep every implementation as small and obvious as possible.\n\n- **Let the code speak** – If you need a multi-paragraph comment, refactor until intent is obvious\n- **Delete fearlessly, Git remembers** – Cut dead code, stale logic, and verbose history\n\n### TypeScript Standards\n\n- Use runtime type validation with `valibot` for external data validation\n- Use early returns for readability\n\n### Code Editing\n\n- Write simple, direct code without backward compatibility concerns - update all call sites together\n\n```typescript\n// ❌ Bad: Optional parameter leads to conditional logic\nfunction saveUser(data: UserData, userId?: string) {\n  const id = userId || generateId(); // Unnecessary fallback logic\n  if (!userId) console.warn(\"Using generated ID\"); // Extra handling\n  return db.save(id, data);\n}\n\n// ✅ Good: Required parameter, update all callers\nfunction saveUser(data: UserData, userId: string) {\n  return db.save(userId, data); // Simple and clear\n}\n```\n\n### Component Patterns\n\n- Use named exports only (no default exports)\n- Event handlers should be prefixed with \"handle\" (e.g., `handleClick`)\n- Use CSS Modules for all styling\n- Import UI components from `@liam-hq/ui` when available\n- Import icons from `@liam-hq/ui`\n\n### File Organization\n\n- Don't code directly in `page.tsx` - create separate page components\n- Follow existing import patterns and tsconfig paths\n- Use consts instead of functions: `const toggle = () => {}`\n\n### Data Fetching\n\n- Server Components for server-side data fetching\n- Client-side fetching only when necessary\n- Align data fetching responsibilities with component roles\n- Use Server Actions for all data mutations (create, update, delete operations)\n\n### CSS\n\n- Use CSS Variables from `@liam-hq/ui` package\n- Generate CSS type definitions with `pnpm gen:css`\n- Use CSS variables according to their intended purpose. Spacing variables should be used exclusively for margins and padding, while height and width specifications should use appropriate units (rem, px, etc.)\n\n### Testing\n\n- Follow principles in @docs/test-principles.md\n\n## Pull Requests\n\nWhen creating pull requests, refer to @.github/pull_request_template.md for the required information and format.\n\n<!-- File: .claude-plugin/marketplace.json (Tokens: ~300 | Category: marketplace) -->\n# Claude Plugin Marketplace Catalog\n\nPath: `.claude-plugin/marketplace.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/marketplace.json)\n\n<!-- File: .claude-plugin/plugin.json (Tokens: ~300 | Category: plugin-manifest) -->\n# claude-plugin Plugin Manifest\n\nPath: `.claude-plugin/plugin.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.claude-plugin/plugin.json)\n\n<!-- File: .cursor/mcp.json (Tokens: ~300 | Category: mcp-config) -->\n# Model Context Protocol (MCP) Configuration\n\nPath: `.cursor/mcp.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/liam-hq/liam/HEAD/.cursor/mcp.json)\n</yakaai_skills>"}