Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 3,886 Bytes
2a40f3a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# Agent Guidelines for inference-playground
## Build/Test/Lint Commands
- `npm run dev` - Start development server
- `npm run build` - Build for production
- `npm run lint` - Run prettier and eslint checks
- `npm run format` - Format code with prettier
- `npm run check` - Run svelte-check for type checking
- `npm run test` or `npm run test:unit` - Run unit tests with vitest
- `npm run test:e2e` - Run e2e tests with playwright
## Code Style Guidelines
- **Formatting**: Uses tabs (tabWidth: 2), printWidth: 120, trailing commas, avoid arrow parens
- **Imports**: Use `.js` extensions for local imports (enforced by custom eslint rule)
- **Path aliases**: Use `$lib/` for src/lib imports
- **Types**: Strict TypeScript with `noUncheckedIndexedAccess`, no explicit `any` allowed
- **Naming**: Use camelCase for variables/functions, PascalCase for components/classes
- **Files**: `.svelte` for components, `.svelte.ts` for reactive state files
- **Icons**: Import from `~icons/carbon/` or `~icons/lucide/` or other unplugin-icons import
- **Error handling**: Use try/catch blocks, display user-friendly error messages via toasts
- **State**: Use Svelte 5 runes (`$state`, `$derived`) and reactive patterns
- **Unused vars**: Prefix with `_` to ignore eslint warnings
- **Object syntax**: Use object shorthand notation when possible
## Svelte general guidelines
### 1. **General Code Style**
- **Use Svelte 5 with runes** for all component state and reactivity.
- **Use snake_case** for all variable, function, and file names.
- **Do not use snake_case** for type/interface names; use **PascalCase** instead.
- **Do not use the `any` type** anywhere in the codebase.
- **Do not prefix private class properties with an underscore**.
- **Use `const` by default**; use `let` only when reassignment is necessary.
- **Prefer explicit over implicit**: always be clear about what your code is doing.
### 2. **Component Structure**
- **One component per file**. Name the file after the component, using kebab-case.
- **Export only what is necessary** from each file.
### 3. **Reactivity and State**
- **Use runes for all reactivity** (`$state`, `$derived`, etc.).
- **Avoid using Svelte’s legacy `$:` label**; prefer runes-based reactivity.
- **Keep state as local as possible**; lift state up only when needed.
- Dont start the dev server.
- **Dont use $app/stores**; use $app/state
- \*\*Dont use on:click handler; use the native onclick. this counts for all events.
- \*\*Dont use :global in the style blocks.
### 4. **TypeScript Practices**
- **Use TypeScript for all code**.
- **Never use `any`**. Use `unknown` or proper types/interfaces.
- **Type names must be PascalCase** (e.g., `UserProfile`).
- **Prefer type inference** where possible, but always type function arguments and return values.
### 5. **Class and Object Practices**
- **Do not prefix private properties with an underscore**.
- **Favor composition over inheritance**.
### 6. **File and Folder Organization**
- **Use kebab-case for all file and folder names**.
- **Group related components, stores, and helpers** in folders.
- **Keep a flat structure unless complexity demands nesting**.
### 7. **Comments and Documentation**
- **Write clear, concise comments** for complex logic.
- **Use JSDoc for function and class documentation**.
- **Remove commented-out code** before merging.
### 8. **Testing and Linting**
- **Write tests for all logic-heavy code** (use your preferred testing framework).
- **Use a linter and formatter** (e.g., ESLint, Prettier) with rules enforcing the above conventions.
### 9. **Other Good Practices**
- **Avoid magic numbers and strings**; use constants.
- **Handle errors gracefully**; never swallow errors silently.
- **Keep dependencies up to date** and avoid unnecessary packages.
- https://svelte.dev/docs/svelte/llms.txt
- https://svelte.dev/docs/kit/llms.txt
|