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