Agent Skill
2/7/2026

prisma-recon

This skill should be used when the user asks to "analyze prisma", "prisma setup", "schema recon", "check prisma config", "prisma structure", "what models exist", "show prisma schema", or when first starting work in a Prisma project to understand the existing setup.

N
nthplusio
0GitHub Stars
1Views
npx skills add nthplusio/functional-claude

SKILL.md

Nameprisma-recon
DescriptionThis skill should be used when the user asks to "analyze prisma", "prisma setup", "schema recon", "check prisma config", "prisma structure", "what models exist", "show prisma schema", or when first starting work in a Prisma project to understand the existing setup.

name: prisma-recon description: This skill should be used when the user asks to "analyze prisma", "prisma setup", "schema recon", "check prisma config", "prisma structure", "what models exist", "show prisma schema", or when first starting work in a Prisma project to understand the existing setup. version: 0.1.8

Prisma Repository Recon

Analyze and document Prisma configuration and schema in the current repository.

When to Use

Run this skill:

  • When first working in a Prisma project
  • When the SessionStart hook detects Prisma but no cached recon exists
  • When the user asks about the project's Prisma setup
  • After significant schema changes to update the cache

Reconnaissance Process

Step 1: Locate Prisma Configuration

Search for Prisma schema files:

# Find schema files
find . -name "schema.prisma" -o -name "*.prisma" 2>/dev/null | head -20

# Check package.json for custom schema path
grep -A5 '"prisma"' package.json 2>/dev/null

Common locations:

  • prisma/schema.prisma (default)
  • src/prisma/schema.prisma
  • Custom path in package.json

Step 2: Parse Datasource Configuration

Extract from schema.prisma:

datasource db {
  provider = "postgresql"  // Database type
  url      = env("DATABASE_URL")
}

Document:

  • Provider: postgresql, mysql, sqlite, sqlserver, mongodb, cockroachdb
  • URL source: Environment variable name
  • Connection string format (without credentials)

Step 3: Analyze Generator Configuration

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["fullTextSearch"]
  binaryTargets   = ["native", "linux-musl"]
}

Document:

  • Provider: Usually prisma-client-js
  • Preview features: Enabled experimental features
  • Binary targets: Deployment platforms

Step 4: Extract Models

For each model, document:

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  role      Role     @default(USER)
  posts     Post[]
  profile   Profile?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@index([email])
  @@map("users")
}

Parse and record:

  • Model name: User
  • Table name: users (if @@map exists)
  • Fields: id, email, name, role, posts, profile, createdAt, updatedAt
  • Primary key: id
  • Unique fields: email
  • Optional fields: name, profile
  • Relations: posts (Post[]), profile (Profile?)
  • Indexes: [email]
  • Enums used: Role

Step 5: Map Relations

Create a relation map:

User <-> Post (one-to-many)
  User.posts -> Post[]
  Post.author -> User (via authorId)

User <-> Profile (one-to-one)
  User.profile -> Profile?
  Profile.user -> User (via userId)

Step 6: Document Enums

enum Role {
  USER
  ADMIN
  MODERATOR
}

List all enums with their values.

Step 7: Check Migration Status

# Check for migrations directory
ls -la prisma/migrations/ 2>/dev/null

# Count migrations
ls prisma/migrations/ 2>/dev/null | grep -E "^[0-9]+" | wc -l

# Check migration lock
cat prisma/migrations/migration_lock.toml 2>/dev/null

Step 8: Identify Environment Configuration

# Check for .env files
ls -la .env* 2>/dev/null

# Check for DATABASE_URL in .env.example (safe to read)
grep "DATABASE_URL" .env.example 2>/dev/null

Cache Output Format

Write findings to ${CLAUDE_PLUGIN_ROOT}/.cache/recon.json:

{
  "lastUpdated": "2024-01-15T10:30:00Z",
  "schemaPath": "prisma/schema.prisma",
  "datasource": {
    "provider": "postgresql",
    "urlEnvVar": "DATABASE_URL"
  },
  "generator": {
    "provider": "prisma-client-js",
    "previewFeatures": ["fullTextSearch"]
  },
  "models": [
    {
      "name": "User",
      "tableName": "users",
      "fields": [
        {"name": "id", "type": "Int", "attributes": ["@id", "@default(autoincrement())"]},
        {"name": "email", "type": "String", "attributes": ["@unique"]},
        {"name": "posts", "type": "Post[]", "relation": true}
      ],
      "primaryKey": ["id"],
      "uniqueFields": ["email"],
      "indexes": [["email"]]
    }
  ],
  "enums": [
    {"name": "Role", "values": ["USER", "ADMIN", "MODERATOR"]}
  ],
  "relations": [
    {"from": "User", "to": "Post", "type": "one-to-many", "field": "posts"},
    {"from": "User", "to": "Profile", "type": "one-to-one", "field": "profile"}
  ],
  "migrations": {
    "count": 5,
    "latest": "20240115_add_user_role",
    "provider": "postgresql"
  }
}

Summary Output

After analysis, provide a human-readable summary:

## Prisma Configuration Summary

**Schema**: prisma/schema.prisma
**Database**: PostgreSQL
**Environment**: DATABASE_URL

### Models (4)

| Model | Table | Fields | Relations |
|-------|-------|--------|-----------|
| User | users | 7 | posts, profile |
| Post | posts | 6 | author, comments |
| Profile | profiles | 4 | user |
| Comment | comments | 5 | post, author |

### Enums (2)
- Role: USER, ADMIN, MODERATOR
- Status: DRAFT, PUBLISHED, ARCHIVED

### Migrations
- 5 migrations applied
- Latest: 20240115_add_user_role
- Lock provider: postgresql

### Key Relations
- User -> Post (one-to-many)
- User -> Profile (one-to-one)
- Post -> Comment (one-to-many)

Updating Cache

Invalidate and refresh cache when:

  • Schema file is modified
  • New migrations are created
  • User explicitly requests refresh

Check cache freshness:

# Compare schema modification time with cache
stat prisma/schema.prisma
stat ${CLAUDE_PLUGIN_ROOT}/.cache/recon.json

Integration with Other Skills

The recon data enables other skills to provide context-aware guidance:

  • prisma-schema: Know existing models when adding new ones
  • prisma-queries: Suggest queries based on actual model structure
  • prisma-migrations: Understand current schema state
Skills Info
Original Name:prisma-reconAuthor:nthplusio