Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
7
Authoritative guidance for agents and contributors working in this repository.
Sign in to like and favorite skills
Authoritative guidance for agents and contributors working in this repository.
src/app/globals.css theme tokens and the cn() helper from src/lib/utils.ts.pnpm, ESLint (Next config), Vitest, Playwright@vercel/postgres), schema in src/db/schema.tssrc/app/api/webhooks/stripe/route.ts)nodemailer@/* → ./src/* (see tsconfig.json)pnpm for all scripts and dependency operations.pnpm-lock.yaml).src/app/** using App Router and route groups like (auth), (dashboard), (admin).src/components/** (marketing, layout, UI)src/server/** (auth, actions, Stripe, rate limiting, email)src/config/** (site, pricing)src/lib/** (env, cookies, utils, crypto, etc.)src/db/** (schema, db client)scripts/** (Node tsx scripts)tests/** (Vitest unit and Playwright e2e)site-header.tsx, pricing-notice.tsx.strict: true; don’t use any unless justified and narrowly scoped."use client" only where interactivity is needed."use server" and live under src/server/actions/** or colocated where appropriate.redirect() from next/navigation for post‑action navigation; avoid returning navigation URLs to the client unless needed.NextResponse for API route handlers.cn() helper to merge class names.globals.css; avoid hard‑coding colors.@/… for src imports; relative imports only for deep local files.alt text for images.metadata and viewport in src/app/layout.tsx.ae, oe, ue, or ss.src/lib/env.ts (Zod). When adding a new env var:
.env.example if present (or README), andsrc/db/schema.ts.pnpm drizzle:generatepnpm drizzle:pushsrc/lib/auth/cookies.ts with SESSION_COOKIE_NAME.src/server/auth.ts:
requireUser() and requireAdmin() gate protected flows (use redirects or throw with localized messages).createMagicLink(), verifyMagicLink(); respect rate limits.createAuditLog() in src/server/audit.ts.src/server/rate-limit.ts to guard endpoints or actions at risk of abuse.src/server/stripe.ts.src/app/api/webhooks/stripe/route.ts is dynamic = "force-dynamic".src/components/**.src/app/** (e.g., /, /pricing, /contact, /demos, /features).(dashboard) and (admin) respectively.These must pass after every substantive change:
pnpm build — no errors or warningspnpm typecheck — no TypeScript errorspnpm lint — no ESLint errors or warningsAdditional suites (run when touching related areas):
pnpm testpnpm e2e (requires pnpm dev in another terminal)Manual smoke checks (as applicable):
/, /pricing, /contact, /demos, /features).src/app/<route>/page.tsx."use client" only if needed."use server" under src/server/actions/.requireUser()/requireAdmin().src/lib/env.ts.src/db/schema.ts (use enums/indices where appropriate).pnpm drizzle:generate then pnpm drizzle:push.onConflictDoUpdate.export const dynamic = "force-dynamic"..env contents as sensitive. Do not print or log secrets.pnpm build clean (no warnings/errors)pnpm typecheck cleanpnpm lint cleanpnpm dev — Start dev server (Turbopack)pnpm build — Production buildpnpm start — Start production serverpnpm lint — Lint with ESLint (Next config)pnpm typecheck — TypeScript diagnosticspnpm test — Vitest unit testspnpm e2e — Playwright E2E tests (requires pnpm dev)pnpm drizzle:generate — Generate Drizzle migrationspnpm drizzle:push — Apply Drizzle migrationspnpm db:clear — Drop all public tables/enums (DANGER)src/config/site.ts, src/config/pricing.ts.This website is purely german. So make sure üäö are used correctly (proper German orthography). Do not use english terms because some customers might not understand it.
UTF-8 character encoding.