KS
Killer-Skills

payload-v3-endpoints — how to use payload-v3-endpoints how to use payload-v3-endpoints, payload-v3-endpoints setup guide, typescript best practices for payload-v3-endpoints, payload-v3-endpoints vs payload-v2, payload-v3-endpoints install, avoiding runtime errors in payload-v3-endpoints

v1.0.0
GitHub

About this Skill

Perfect for TypeScript-based AI Agents needing correct Payload v3 endpoint patterns and logger call validation. payload-v3-endpoints is a CMS plugin for creating email newsletters, focusing on correct TypeScript patterns for endpoint handling and logging.

Features

Implements correct TypeScript handler patterns for Payload v3 endpoints
Uses async/await for req.json() to handle request body data
Avoids undefined req.data by using the correct req.json() method
Supports logger calls with correct patterns to prevent runtime errors
Ensures compatibility with Payload v3 and TypeScript

# Core Topics

aniketpanjwani aniketpanjwani
[0]
[0]
Updated: 3/6/2026

Quality Score

Top 5%
33
Excellent
Based on code quality & docs
Installation
SYS Universal Install (Auto-Detect)
Cursor IDE Windsurf IDE VS Code IDE
> npx killer-skills add aniketpanjwani/payload-plugin-email-newsletter/payload-v3-endpoints

Agent Capability Analysis

The payload-v3-endpoints MCP Server by aniketpanjwani is an open-source Categories.community integration for Claude and other AI agents, enabling seamless task automation and capability expansion. Optimized for how to use payload-v3-endpoints, payload-v3-endpoints setup guide, typescript best practices for payload-v3-endpoints.

Ideal Agent Persona

Perfect for TypeScript-based AI Agents needing correct Payload v3 endpoint patterns and logger call validation.

Core Value

Empowers agents to prevent runtime errors and TypeScript issues by ensuring correct patterns for Payload v3 endpoints and logger calls, utilizing async handlers and req.json() for data access.

Capabilities Granted for payload-v3-endpoints MCP Server

Validating Payload v3 endpoint implementations
Debugging TypeScript issues related to req.data access
Automating logger call pattern checks for consistency

! Prerequisites & Limits

  • Requires understanding of Payload v3 endpoint patterns
  • Specific to TypeScript-based applications
  • May require adjustments for non-standard logger implementations
Project
SKILL.md
4.3 KB
.cursorrules
1.2 KB
package.json
240 B
Ready
UTF-8

# Tags

[No tags]
SKILL.md
Readonly
<objective> Ensure all Payload v3 endpoints and logger calls follow the correct patterns to avoid runtime errors and TypeScript issues. </objective>

<critical_patterns>

<pattern name="request-body-access"> **WRONG (Payload v2 pattern):** ```typescript handler: async (req, res) => { const data = req.data // undefined in v3! res.status(200).json({ success: true }) } ```

CORRECT (Payload v3 pattern):

typescript
1handler: async (req) => { 2 const data = await req.json() 3 return Response.json({ success: true }, { status: 200 }) 4}

Alternative using helper:

typescript
1import { addDataAndFileToRequest } from 'payload' 2 3handler: async (req) => { 4 await addDataAndFileToRequest(req) 5 const data = req.data // now available 6 return Response.json({ success: true }) 7}
</pattern> <pattern name="response-format"> **WRONG:** ```typescript res.status(200).json({ message: 'success' }) res.json({ message: 'success' }) ```

CORRECT:

typescript
1return Response.json({ message: 'success' }, { status: 200 }) 2return Response.json({ message: 'success' }) // defaults to 200

Error responses:

typescript
1return Response.json({ error: 'Not found' }, { status: 404 }) 2return Response.json({ error: 'Unauthorized' }, { status: 401 })
</pattern> <pattern name="cookie-access"> **WRONG:** ```typescript const token = req.cookies.token // undefined in v3! ```

CORRECT:

typescript
1const cookieHeader = req.headers.get('cookie') 2const cookies = parseCookies(cookieHeader) 3const token = cookies.token
</pattern> <pattern name="handler-signature"> **WRONG:** ```typescript handler: async (req, res) => { ... } ```

CORRECT:

typescript
1handler: async (req) => { ... } 2// or with PayloadRequest type 3handler: async (req: PayloadRequest) => { ... }
</pattern> <pattern name="logger-api"> Payload uses pino logger. The signature is: `logger.info(object, message)` NOT `logger.info(message, object)`

WRONG:

typescript
1req.payload.logger.info('User created', { userId: 123 }) 2req.payload.logger.error('Failed to save:', error)

CORRECT:

typescript
1req.payload.logger.info({ userId: 123 }, 'User created') 2req.payload.logger.error({ error: String(error) }, 'Failed to save')

For simple messages (no object):

typescript
1req.payload.logger.info('Operation completed') // This is fine
</pattern> <pattern name="endpoint-definition"> Complete endpoint example: ```typescript import type { Endpoint, PayloadRequest } from 'payload'

export const myEndpoint: Endpoint = { path: '/my-endpoint', method: 'post', handler: async (req: PayloadRequest) => { try { const data = await req.json()

  // Access payload
  const result = await req.payload.find({
    collection: 'users',
    where: { email: { equals: data.email } }
  })

  req.payload.logger.info({ count: result.totalDocs }, 'Found users')

  return Response.json({
    success: true,
    data: result
  })
} catch (error) {
  req.payload.logger.error({ error: String(error) }, 'Endpoint failed')
  return Response.json({ error: 'Internal error' }, { status: 500 })
}

} }

</pattern>

</critical_patterns>

<common_errors>
| Error | Cause | Fix |
|-------|-------|-----|
| `req.data is undefined` | Using v2 pattern | Use `await req.json()` |
| `req.cookies is undefined` | Using v2 pattern | Parse from `req.headers.get('cookie')` |
| `res.json is not a function` | Handler has wrong signature | Return `Response.json()` |
| `TS2769: No overload matches` on logger | Wrong argument order | Put object first, message second |
| `Type 'string \| string[]' not assignable` | relationTo can be array | Use `Array.isArray(x) ? x[0] : x` |
</common_errors>

<quick_reference>
```typescript
// Request body
const data = await req.json()

// Response
return Response.json({ data }, { status: 200 })

// Logger
req.payload.logger.info({ key: value }, 'Message')
req.payload.logger.error({ error: String(e) }, 'Error message')

// Handler signature
handler: async (req: PayloadRequest) => { ... }

</quick_reference>

<success_criteria>

  • All endpoints use await req.json() for body access
  • All responses use Response.json()
  • All logger calls have object first, message second
  • Handler signature is (req) not (req, res)
  • TypeScript compiles without errors </success_criteria>

Related Skills

Looking for an alternative to payload-v3-endpoints or building a Categories.community AI Agent? Explore these related open-source MCP Servers.

View All

widget-generator

Logo of f
f

widget-generator is an open-source AI agent skill for creating widget plugins that are injected into prompt feeds on prompts.chat. It supports two rendering modes: standard prompt widgets using default PromptCard styling and custom render widgets built as full React components.

149.6k
0
Design

chat-sdk

Logo of lobehub
lobehub

chat-sdk is a unified TypeScript SDK for building chat bots across multiple platforms, providing a single interface for deploying bot logic.

73.0k
0
Communication

zustand

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
Communication

data-fetching

Logo of lobehub
lobehub

The ultimate space for work and life — to find, build, and collaborate with agent teammates that grow with you. We are taking agent harness to the next level — enabling multi-agent collaboration, effortless agent team design, and introducing agents as the unit of work interaction.

72.8k
0
Communication