Skip to main content

essentials

Critical rules that must always be followed

Informations de source

Dépôt
trycompai/comp
Dernière activité de la source
27 avril 2026 à 13:37
Langue détectée de SKILL.md
anglais
Étoiles
2 035
Forks
433

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
essentials
description
Critical rules that must always be followed
Source Cursor rule: `.cursor/rules/essentials.mdc`. Original file scope: `**/*.{ts,tsx}`. Original Cursor alwaysApply: `true`. # Essentials ## Package Manager Use `bun`, never npm/yarn/pnpm. ```bash bun install # Install deps bun add <pkg> # Add package bun run <script> # Run script bunx <cmd> # Execute binary ``` ## Components **Use `@trycompai/design-system` first**, `@trycompai/ui` only as fallback. ```tsx // ✅ Design system import { Button, Card, Input, Select } from '@trycompai/design-system'; import { Add, Close } from '@trycompai/design-system/icons'; // ❌ Don't use when DS has the component import { Button } from '@trycompai/ui/button'; import { Plus } from 'lucide-react'; ``` **No `className` on DS components** - use variants and props only. ```tsx // ✅ Use variants <Button variant="destructive" size="sm">Delete</Button> // ❌ No className overrides <Button className="bg-red-500">Delete</Button> ``` ## TypeScript **No `any`. No unsafe type assertions.** ```tsx // ✅ Validate external data with zod const TaskSchema = z.object({ id: z.string(), title: z.string() }); const task = TaskSchema.parse(response.data); // ❌ Never const data: any = fetchData(); const task = response as Task; ``` ## Data Fetching **Get `organizationId` from URL params, not session.** ```tsx // ✅ From params export default async function Page({ params }: { params: Promise<{ orgId: string }> }) { const { orgId } = await params; } // ❌ Not from session const session = await auth.api.getSession(); const orgId = session?.session?.activeOrganizationId; ``` **Server components fetch, pass to client with SWR `fallbackData`.** ```tsx // Server page const data = await fetchData(orgId); return <ClientComponent initialData={data} />; // Client component const { data } = useSWR(key, fetcher, { fallbackData: initialData }); ``` ## State Management **No `nuqs`** - use React `useState` for UI state, Next.js for URL state. ```tsx // ✅ React state for UI const [isOpen, setIsOpen] = useState(false); // ❌ No nuqs import { useQueryState } from 'nuqs'; ``` ## After Changes **Always run checks after code changes:** ```bash bun run typecheck bun run lint ``` Fix all errors before committing.
Voir sur GitHub