add-endpointlisted
Install: claude install-skill aiskillstore/marketplace
# Adding HTTP Endpoints
## When to Use
- Creating a new HTTP route
- Adding an API endpoint
- Wiring a new handler to the Hono app
## Route File Pattern
Each endpoint gets its own file with colocated schema, types, and handler.
**Location:** `src/server/routes/{category}/{endpoint}.ts`
```typescript
// src/server/routes/auth/login.ts
import { z } from 'zod';
import type { Context } from 'hono';
import type { ISessionManager } from '../types';
// 1. Request schema (colocated)
export const loginRequestSchema = z.object({
url: z.string().url(),
client: z.string().min(1).max(3),
auth: authConfigSchema
});
// 2. Response type (colocated)
export interface LoginResponse {
sessionId: string;
username: string;
expiresAt: number;
}
// 3. Single handler export (factory pattern)
export function loginHandler(sessionManager: ISessionManager) {
return async (c: Context) => {
const body = await c.req.json();
const validation = loginRequestSchema.safeParse(body);
if (!validation.success) {
return c.json({
success: false as const,
error: 'Invalid request',
code: 'VALIDATION_ERROR'
}, 400);
}
// ... implementation ...
return c.json({ success: true as const, data: response });
};
}
```
## Wiring Routes
Register routes in `src/server/routes/index.ts`:
```typescript
import { loginHandler } from './auth/login';
export function regis