|
@@ -0,0 +1,45 @@
|
|
|
+# Project coding standards
|
|
|
+
|
|
|
+## Generic Communication Guidelines
|
|
|
+
|
|
|
+- Be succint and be aware that expansive generative AI answers are costly and slow
|
|
|
+- Avoid providing explanations, trying to teach unless asked for, your chat partner is an expert
|
|
|
+- Stop apologising if corrected, just provide the correct information or code
|
|
|
+- Prefer code unless asked for explanation
|
|
|
+- Stop summarizing what you've changed after modifications unless asked for
|
|
|
+
|
|
|
+## TypeScript Guidelines
|
|
|
+
|
|
|
+- Use TypeScript for all new code
|
|
|
+- Where possible, prefer implementations without allocation
|
|
|
+- When there is an option, opt for more performant solutions and trade RAM usage for less CPU cycles
|
|
|
+- Prefer immutable data (const, readonly)
|
|
|
+- Use optional chaining (?.) and nullish coalescing (??) operators
|
|
|
+
|
|
|
+## React Guidelines
|
|
|
+
|
|
|
+- Use functional components with hooks
|
|
|
+- Follow the React hooks rules (no conditional hooks)
|
|
|
+- Keep components small and focused
|
|
|
+- Use CSS modules for component styling
|
|
|
+
|
|
|
+## Naming Conventions
|
|
|
+
|
|
|
+- Use PascalCase for component names, interfaces, and type aliases
|
|
|
+- Use camelCase for variables, functions, and methods
|
|
|
+- Use ALL_CAPS for constants
|
|
|
+
|
|
|
+## Error Handling
|
|
|
+
|
|
|
+- Use try/catch blocks for async operations
|
|
|
+- Implement proper error boundaries in React components
|
|
|
+- Always log errors with contextual information
|
|
|
+
|
|
|
+## Testing
|
|
|
+
|
|
|
+- Always attempt to fix #problems
|
|
|
+- Always offer to run `yarn test:app` in the project root after modifications are complete and attempt fixing the issues reported
|
|
|
+
|
|
|
+## Types
|
|
|
+
|
|
|
+- Always include `packages/math/src/types.ts` in the context when your write math related code and always use the Point type instead of { x, y}
|