Skip to main content

essentials

Critical rules that must always be followed

Datos de origen

Repositorio
trycompai/comp
Última actividad en el origen
27 de abril de 2026 a las 13:37
Idioma detectado de SKILL.md
inglés
Estrellas
2088
Forks
446

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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.
Ver en GitHub