ワンクリックで
backend-development
Modern backend patterns, API design, OWASP security checklist, testing pyramid. For Node.js, Python, Go backends.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Modern backend patterns, API design, OWASP security checklist, testing pyramid. For Node.js, Python, Go backends.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | backend-development |
| description | Modern backend patterns, API design, OWASP security checklist, testing pyramid. For Node.js, Python, Go backends. |
Load this skill before implementing APIs, databases, or server-side logic.
| Method | Action | Idempotent | Safe |
|---|---|---|---|
| GET | Read | ✅ | ✅ |
| POST | Create | ❌ | ❌ |
| PUT | Replace | ✅ | ❌ |
| PATCH | Update | ❌ | ❌ |
| DELETE | Remove | ✅ | ❌ |
| Code | Meaning | When to Use |
|---|---|---|
| 200 | OK | Successful GET/PUT/PATCH |
| 201 | Created | Successful POST |
| 204 | No Content | Successful DELETE |
| 400 | Bad Request | Validation failed |
| 401 | Unauthorized | No/invalid auth |
| 403 | Forbidden | Auth valid, no permission |
| 404 | Not Found | Resource doesn't exist |
| 409 | Conflict | Duplicate, version mismatch |
| 422 | Unprocessable | Semantic errors |
| 500 | Server Error | Unexpected failures |
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Human readable message",
"details": [
{ "field": "email", "message": "Invalid format" }
]
}
}
// ❌ NEVER
db.query(`SELECT * FROM users WHERE id = ${userId}`)
// ✅ ALWAYS parameterize
db.query("SELECT * FROM users WHERE id = ?", [userId])
// Check ownership on EVERY request
if (resource.userId !== currentUser.id) {
throw new ForbiddenError()
}
// Validate at the boundary with Zod
const schema = z.object({
email: z.string().email(),
age: z.number().int().positive().max(150),
})
const data = schema.parse(req.body)
╱╲
╱ ╲ E2E Tests (10%)
╱────╲ - Full system flows
╱ ╲ - Critical paths only
╱────────╲
╱ ╲ Integration Tests (20%)
╱────────────╲ - API endpoints
╱ ╲- Database operations
╱────────────────╲
╲ ╱ Unit Tests (70%)
╲──────────────╱ - Pure functions
╲ ╱ - Business logic
╲──────────╱ - Fast, isolated
describe("UserService", () => {
describe("createUser", () => {
it("should create user with valid data", async () => {
// Arrange
const input = { email: "test@example.com", name: "Test" }
// Act
const user = await userService.createUser(input)
// Assert
expect(user.id).toBeDefined()
expect(user.email).toBe(input.email)
})
it("should reject duplicate email", async () => {
// ... test error case
})
})
})
// ❌ N+1 problem
const users = await db.users.findMany()
for (const user of users) {
user.posts = await db.posts.findMany({ where: { userId: user.id }})
}
// ✅ Eager loading
const users = await db.users.findMany({
include: { posts: true }
})
// Configure pool size based on:
// pool_size = (core_count * 2) + effective_spindle_count
const pool = new Pool({
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
})
await db.$transaction(async (tx) => {
const user = await tx.user.create({ data: userData })
await tx.account.create({ data: { userId: user.id, ...accountData }})
// Both succeed or both fail
})
| Cache Type | TTL | Use Case |
|---|---|---|
| Response | 5min | Static content |
| Session | 30min | User data |
| Computed | 1hr | Expensive queries |
| Permanent | ∞ | Immutable data |
const limiter = rateLimit({
windowMs: 60 * 1000, // 1 minute
max: 100, // 100 requests per minute
message: { error: "Too many requests" }
})
// Structured logging
logger.info("User created", {
userId: user.id,
email: user.email, // Consider PII masking
action: "user.create",
duration: Date.now() - start,
})
// Error logging
logger.error("Database connection failed", {
error: err.message,
stack: err.stack,
service: "postgres",
retryCount: 3,
})
Before shipping any backend code:
Interview the user relentlessly about a plan or design until branch-level decisions are resolved for execution.
Access Figma designs, extract design systems, and retrieve component specifications. Use when implementing UI from Figma mockups, extracting design tokens, or analyzing design files.
Enforce cost-aware MCP usage. Use when a task might trigger heavy external tools, web search, or broad context expansion. Prevents token burn by ensuring MCPs are only used when local context is insufficient.
Navigate the Warmplane mcp0 facade efficiently. Use when the active config exposes provider capabilities through `mcp0_*` tools and you need to discover or call provider tools without brute-force describing large capability sets. Trigger on requests involving mcp0, Warmplane, or provider work through the facade such as Linear, Notion, Figma, New Relic, Context7, grep.app, or Storybook tools.
Use this when the user needs to control Chrome, navigate to a page, inspect a tab, click or fill elements, take screenshots, or automate a browser flow with aeroxy/chrome-devtools-cli.
Guidelines for creating and managing implementation plans with citations