Skip to main content
Verifies an existing Userplane integration against the matching framework skill. Produces a PASS/FAIL checklist with file:line citations and a concrete diff for every failure.

Usage

/userplane:audit
No arguments required. The agent detects the framework and loads the matching skill as ground truth.
Read-only. The audit agent never edits files — every FAIL includes a diff you can apply yourself.

What it checks

CategoryWhat the agent verifies
Provider wiringProvider or init call present at the framework-correct location
Script placementCDN script in the correct position (head/body) per framework guidance
SSR hazardsNo browser-only SDK calls on the server render path
setUser / setMetadataCalled after auth, with non-PII fields
CSP headersUserplane domains and third-party iframe hosts in the CSP config
Env varsConsistent across dev / prod configs

Output format

PASS/FAIL summary: 4 pass, 2 fail

PASS  Provider wiring — src/app/providers.tsx:12
PASS  Script placement — src/app/layout.tsx:8
FAIL  SSR hazard — src/components/Dashboard.tsx:45
      SDK call to initialize() outside a browser guard
      - initialize({ writeKey: process.env.NEXT_PUBLIC_USERPLANE_WRITE_KEY })
      + if (typeof window !== 'undefined') { initialize({ ... }) }
FAIL  CSP headers — next.config.js:18
      Missing frame-src for userplane.io
      - frame-src 'self'
      + frame-src 'self' *.userplane.io
PASS  setUser call — src/hooks/useAuth.ts:32
PASS  Env vars — .env.local, .env.production

Example prompts

/userplane:audit
Check if my Userplane install is correct. I'm worried about SSR issues — we just migrated to the App Router.
Audit my Userplane setup. We're seeing a blank iframe in production but it works in dev.