

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
123456# Hermes App - TypeScript/React Rules78## TypeScript910### Type Safety11- Use strict TypeScript settings (`tsconfig.json`)12- Avoid `any` type - use `unknown` or specific types13- Define interfaces for all data structures14- Export types from `src/types/` directory1516### Import Conventions17- Use absolute imports via path aliases configured in `tsconfig.json`18- Group imports: React, third-party, local components, types, styles19- Use named imports over default imports when possible2021## React Patterns2223### Component Structure24- Prefer functional components with hooks25- Use TypeScript for props interfaces26- Export components as named exports27- Keep components focused and single-purpose28- Use functional programming patterns, avoid class components29- Use hooks for state management3031Example structure:32```typescript33interface MyComponentProps {34 title: string;35 onAction: () => void;36}3738export function MyComponent({ title, onAction }: MyComponentProps) {39 // Component logic40 return <div>{title}</div>;41}42```4344### State Management45- Use React hooks (`useState`, `useEffect`, etc.)46- TanStack Query for server state47- Context API for global client state (see `AuthContext`)48- Custom hooks for reusable logic (see `src/hooks/`)4950## TanStack Router5152### Route Files53- Place route files in `src/routes/`54- Follow file-based routing conventions55- Route files use special naming (e.g., `auth.login.tsx`, `__root.tsx`)56- Define loaders and error boundaries when needed57- Use `createFileRoute` for route definitions5859### Navigation60- Use `<Link>` from `@tanstack/react-router`61- Use `useNavigate()` hook for programmatic navigation62- Use type-safe route paths6364## TanStack Query6566### Query Keys67- Use array-based query keys with hierarchy: `['resource', 'action', ...params]`68- Example: `['downloads', 'list', { status: 'completed' }]`6970### Hooks Usage71- Use `useQuery` for fetching data72- Use `useMutation` for creating/updating/deleting73- Configure query client in `src/lib/queryClient.ts`74- Handle loading and error states appropriately7576### Mutations77- Invalidate relevant queries after mutations78- Optimistic updates for better UX when appropriate79- Show toast notifications for success/error states8081## shadcn/ui Components8283### Component Usage84- Import components from `src/components/ui/`85- Use composition to build complex components86- Maintain accessibility (ARIA attributes)87- Follow shadcn/ui conventions and styling8889### Styling90- Use Tailwind v4 CSS classes91- Use `cn()` utility from `src/lib/utils.ts` for conditional classes92- Follow mobile-first responsive design93- Use `class-variance-authority` for component variants9495### Theme96- Support light/dark themes via `next-themes`97- Access theme via `useTheme()` hook98- Use CSS variables for theme colors (defined in `style.css`)99100## Custom Hooks101102### Naming103- All custom hooks must start with `use` prefix104- Place in `src/hooks/` directory105- One hook per file with same name as hook106107### Structure108- Define clear TypeScript return types109- Include JSDoc comments for complex hooks110- Compose smaller hooks into larger ones111- Handle cleanup in `useEffect` return functions112113Examples from codebase:114- `useConfiguration` - App configuration state115- `useDownloadActions` - Download queue operations116- `useNotifications` - Toast notification system117- `useKeyboardShortcuts` - Keyboard shortcuts118119## State and Effects120121### useState122- Initialize with correct types123- Use functional updates for derived state124- Consider using `useReducer` for complex state125126### useEffect127- Declare dependencies accurately128- Return cleanup functions129- Avoid unnecessary re-renders130131## API Integration132133### API Client134- Use centralized API client from `src/services/api/client.ts`135- Handle authentication tokens automatically136- Type API responses using interfaces from `src/types/api.ts`137138### Error Handling139- Catch and display user-friendly error messages140- Use toast notifications for errors141- Log errors for debugging142143## Performance144145### Code Splitting146- Use dynamic imports for large components147- Leverage Vite's automatic code splitting148- Lazy load routes when appropriate149150### Memoization151- Use `useMemo` for expensive computations152- Use `useCallback` for callback functions passed as props153- Use `React.memo` for components that re-render frequently154155## Accessibility156157- Use semantic HTML elements158- Include ARIA labels and roles159- Ensure keyboard navigation works160- Test with screen readers161- Maintain sufficient color contrast162163## Linting and Formatting164165- Run `pnpm lint` before committing166- Run `pnpm lint:fix` to auto-fix issues167- ESLint configuration in `eslint.config.js`168- TypeScript checks: `pnpm type-check`169
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| TechSquidTV/Hermes.cursor/rules/30-tests.mdc · 46 | Cursor rules | buildteststylearch+4 | 85/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-api.mdc · 46 | Cursor rules | stylearchdependenciesapi+2 | 77/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 46 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-app-components.mdc · 46 | Cursor rules | archtypesuiperformance+1 | 65/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-app-routes.mdc · 46 | Cursor rules | archapiuido-not | 65/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/30-docker.mdc · 46 | Cursor rules | setupbuildstylesecurity+4 | 84/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/00-project.mdc · 46 | Cursor rules | setuplint-formatstylearch+4 | 89/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-db.mdc · 46 | Cursor rules | teststylearchtesting-strategy+3 | 73/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-app-hooks.mdc · 46 | Cursor rules | lint-formatstylearchtypes+3 | 73/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/30-docs.mdc · 46 | Cursor rules | setuplint-formatstylearch+3 | 81/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| bybren-llc/safe-agentic-workflow.cursor/rules/10-backend-python.mdc · 399 | Cursor rules | testlint-formatstylegit+4 | 97/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/techsquidtv-hermes-cursor-rules-10-hermes-app)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.