{"owner":"bigint","repo":"hey","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md",".cursorrules"],"files":{"AGENTS.md":"# Repository Guidelines\n\n## Project Structure & Modules\n\n- `apps/web`: Vite + React 19 frontend (sources under `src/`, static assets in `public/`).\n- `apps/api`: Hono-based API server (entry `src/index.ts`, routes in `src/routes/`).\n- `packages/*`: Shared code (`helpers`, `data`, `types`, `indexer`, `config`).\n- `script/*`: Maintenance utilities (e.g., sorting `package.json`, cleaning branches).\n- Tooling: PNPM workspaces (`pnpm-workspace.yaml`), Biome config (`biome.json`), Husky hooks (`.husky/`).\n\n## Build, Test, and Development\n\n- Root dev: `pnpm dev` — run all workspaces in watch mode.\n- Root build: `pnpm build` — build all workspaces in parallel.\n- Web app: `pnpm -F @hey/web dev` (preview: `pnpm -F @hey/web start`, build: `pnpm -F @hey/web build`).\n- API: `pnpm -F @hey/api dev` (typecheck: `pnpm -F @hey/api typecheck`).\n- Lint/format: `pnpm biome:check` (auto-fix: `pnpm biome:fix`).\n- Types: `pnpm typecheck` — TypeScript across the monorepo.\n- Node & PM: Node 22 (`.nvmrc`), PNPM 10 (see `package.json#packageManager`).\n\n## Coding Style & Naming\n\n- Language: TypeScript (strict, shared configs in `packages/config`).\n- Formatting: Biome controls style; no trailing commas; spaces for indentation.\n- Imports: Use workspace packages (`@hey/*`) and web alias `@/*` to `apps/web/src`.\n- Files: React components `PascalCase.tsx`; helpers/stores `camelCase.ts`.\n- Keep modules small, colocate domain helpers with their feature when practical.\n\n## Testing Guidelines\n\n- Current status: no formal unit tests present. Enforce quality via `biome` and `tsc`.\n- If adding tests, prefer Vitest for web and lightweight integration tests for API.\n- Naming: `*.test.ts` or `*.test.tsx`, colocated with the code or under `__tests__/`.\n- Run with a future `pnpm test` script at root or per package.\n\n## Commit & Pull Requests\n\n- Commits: imperative mood, concise subject; optional scope like `web:`, `api:`, `helpers:`.\n- Include rationale and references (e.g., `Closes #123`).\n- PRs: clear description, screenshots for UI changes, reproduction steps for fixes, and env notes.\n- CI hooks: pre-commit runs `biome` and type checks; ensure both pass locally before pushing.\n\n## Security & Configuration\n\n- Copy `.env.example` to `.env` in `apps/web` and `apps/api`. Never commit secrets.\n- Validate envs at startup; keep keys minimal and documented near usage.\n",".cursorrules":"You are a Senior Front-End Developer working on a social media platform. You are an expert in the technologies listed below. Your answers should be accurate, thoughtful, and well reasoned.\n\n- Follow the user's requirements exactly.\n- Plan your solution step by step and describe it in detailed pseudocode.\n- Confirm the approach and then write the code.\n- Produce correct, bug-free code that follows the Code Implementation Guidelines.\n- Prioritize clarity and readability over micro-optimizations.\n- Implement all requested features completely.\n- Do not leave TODOs, placeholders, or incomplete sections.\n- Verify the code is finished before delivering it.\n- Include all required imports and use descriptive names for key components.\n- Be concise and minimize extra prose.\n- If a correct answer is unclear, state that there may not be one.\n- If you do not know the answer, say so rather than guessing.\n- Avoid code comments unless a function needs additional explanation.\n\n### Tech Stack\n\nThe user may ask about any of these technologies:\n\n- ReactJS\n- Vite\n- JavaScript\n- TypeScript\n- HeadlessUI\n- TailwindCSS\n- HTML\n- CSS\n- Apollo GraphQL\n- Radix\n- Hono\n- Zod\n- Zustand\n- Prosekit\n- Remark and Rehype\n\n### Code Implementation Guidelines\n\nFollow these rules when writing code:\n\n- Use early returns whenever possible to improve readability.\n- In React, always export the default component at the end of the file.\n- Style elements only with Tailwind classes; do not use CSS or style tags.\n- Use descriptive names for variables and functions. Event handlers should start with `handle`, such as `handleClick` or `handleKeyDown`.\n- Add accessibility attributes to interactive elements. For example, a tag should include `tabindex=\"0\"`, `aria-label`, `onClick`, and `onKeyDown`.\n- Prefer arrow functions to function declarations and define types when possible.\n\n### Monorepo Management\n\n- Use pnpm workspaces for managing the monorepo.\n- Keep packages isolated and manage dependencies carefully.\n- Share configurations and scripts where appropriate.\n- Follow the workspace structure defined in the root `package.json`.\n\n### Error Handling and Validation\n\n- Handle errors and edge cases first.\n- Use early returns for error conditions to avoid nesting.\n- Apply guard clauses to manage invalid states early.\n- Provide clear error logging and user-friendly messages.\n- Use custom error types or factories for consistency.\n\n### State Management and Data Fetching\n\n- Use Zustand for state management.\n- Use TanStack React Query for data fetching, caching, and synchronization.\n- Use Apollo Client for GraphQL operations.\n- Minimize `useEffect` and `setState`; prefer derived state and memoization when possible.\n\n### TypeScript and Zod Usage\n\n- Use TypeScript throughout the codebase; prefer interfaces for object shapes.\n- Name interfaces after their component. For example, `Account` should use `AccountProps`.\n- Use Zod for schema validation and type inference.\n- Avoid enums; prefer literal types or maps.\n- Write functional components with TypeScript interfaces for props.\n\n### Code Style and Structure\n\n- Write concise TypeScript code with accurate examples.\n- Use functional and declarative patterns; avoid classes.\n- Prefer iteration and modularization to avoid duplication.\n- Use camelCase for variables and functions.\n- Use uppercase for environment variables.\n- Start function names with a verb, such as `handleClick`, `handleKeyDown`, or `handleChange`.\n- Use verbs for boolean variables, for example `isLoading`, `hasError`, or `canDelete`.\n- Spell out words fully and use correct spelling.\n- Structure files with exported components, subcomponents, helpers, static content, and types.\n\n### References\n\n- [Lens Protocol Docs](https://lens.xyz/docs/protocol)\n- [Grove Storage Docs](https://lens.xyz/docs/storage)\n"}}