Install
$ agentstack add skill-zachjxyz-jvn-stack-knowledge ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Stack Knowledge
This skill provides stack-specific patterns for agents making architectural and implementation decisions.
Neon Postgres
- Use
@neondatabase/serverlessdriver with Drizzle ORM - Connection:
DATABASE_URLenv var pointing to Neon's pooled connection string - Neon branching: each Vercel preview deployment can get its own database branch
- No Row-Level Security — authorization happens in the application layer via Better Auth middleware
- Migrations:
drizzle-kit pushfor development,drizzle-kit migratefor production - Always use connection pooling in serverless environments
Drizzle ORM
- All database access goes through Drizzle — no raw SQL in application code
- Define schemas in
src/db/schema/with one file per entity - Index every column used in WHERE, JOIN, or ORDER BY
- Use partial indexes when filtering on constant conditions (e.g.,
status = 'active') - Infer types from schema:
type User = typeof users.$inferSelect
Better Auth
- Configure with Drizzle adapter pointing at Neon
- After adding/changing plugins, always run:
npx @better-auth/cli@latest generate - Import plugins from dedicated paths:
import { twoFactor } from "better-auth/plugins/two-factor" - Infer session types:
typeof auth.$Infer.Session - Environment variables:
BETTER_AUTH_SECRET,BETTER_AUTH_URL - Server-side auth:
auth.api.getSession()
Next.js App Router
- Server Components by default — only add
"use client"for interactivity/hooks/browser APIs - Server actions for mutations, route handlers for webhooks/external integrations
- Parallel data fetching with
Promise.all()— never sequential awaits - Wrap async server components in `` with meaningful fallbacks
- Dynamic imports via
next/dynamicfor heavy components not needed on first paint
Tailwind CSS
- Utility-first — avoid custom CSS unless absolutely necessary
- Use
cn()utility (clsx + tailwind-merge) for conditional classes - Design tokens via CSS custom properties in
globals.css
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: zachjxyz
- Source: zachjxyz/jvn
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.