本文へ移動
cccskills
無料GitHub で公開

backend-api-design

Design RPC-style APIs with layered architecture (Controller → Manager → Repository). Use when creating new API endpoints, designing API contracts, or reviewing API patterns.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md3.2 KB
  • code-patterns.md2.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Backend API Design — Quick Reference

URL Patterns

GET  /api/v1/employees              # List (plural)
GET  /api/v1/employee               # Get one (?id=xxx)
POST /api/v1/employee               # Create
POST /api/v1/employee/update        # Update (?id=xxx)
POST /api/v1/employee/delete        # Soft delete (?id=xxx)
POST /api/v1/employee/restore       # Restore (?id=xxx)
POST /api/v1/sync/employees         # Action

Hard Rules

  • NO path params — always @QueryValue, never @PathVariable
  • Singular for single resource — /employee not /employees/{id}
  • Plural for collections — /employees
  • Verb sub-paths for actions — /delete, /restore, /sync

Layered Architecture

Controller  →  thin, just delegates
    ↓
Manager     →  business logic, transactions, Either returns
    ↓
Repository  →  data access only, no business logic

Controller: Thin Wrapper

  • Parse query params with defaults
  • Delegate to manager
  • Unwrap Either with .throwOrValue()
  • NO business logic, NO repository access

Manager: Business Logic

  • Returns Either<ClientException, T>
  • Wraps DB ops in transaction(db.primary) { }
  • Orchestrates multiple repositories
  • Validates business rules

Repository: Data Access

  • Returns entities or null
  • db.replica for reads, db.primary for writes
  • Always checks deletedAt.isNull()

Quick Code Reference

The core controller delegation pattern:

@Get("/employee")
suspend fun getEmployee(@QueryValue id: UUID): EmployeeResponse {
  return employeeManager.findById(id).throwOrValue()
}
  • Response models — companion object { fun from(entity) } in module-client/response/{domain}/
  • Pagination — offset-based, manager returns EmployeeListResponse with items, total, page, limit, hasMore
  • Errors — return ClientError.NOT_FOUND.asException().left() from managers, never throw
  • Factory beans — @Factory class with @Singleton method, wire repos + db into manager

See code-patterns.md for complete controller, response model, pagination, error handling, and factory bean templates.

Gotchas

  • Multi-word @QueryValue params MUST have explicit snake_case names. The frontend axios interceptor sends project_id but Micronaut matches the literal param name. Write @QueryValue("project_id") projectId: UUID, not bare @QueryValue projectId: UUID.
  • Don't use @Put, @Delete, or @Patch. This is RPC-style — all mutations are @Post. The only @Get is for reads.
  • Controllers that inject repositories are a code smell. If you see private val fooRepository: FooRepository in a controller, move it to the manager.
  • andWhere {} not second .where {}. Calling .where {} twice replaces the first condition. Use .andWhere {} to chain.
  • Don't forget @ExecuteOn(TaskExecutors.IO). Without it, suspend functions may hang or run on the wrong thread pool. Every controller needs it.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Creates RPC-style endpoint following layered architecture (Controller → Manager → Repository). Use when creating new API endpoints or CRUD operations.

日本語の概要は準備中です。原文の説明を表示しています。

c0x12c/ai-toolkit1072026年6月18日 更新

Write blog posts, guides, tutorials, and long-form content. Sounds like a real person, not AI. Use when the user wants polished written content.

日本語の概要は準備中です。原文の説明を表示しています。

c0x12c/ai-toolkit1072026年6月18日 更新

Run a structured brainstorm session for startup ideas. Takes a theme or problem and generates ideas with quick gut-checks. Use when the user wants to explore a space or generate new ideas.

日本語の概要は準備中です。原文の説明を表示しています。

c0x12c/ai-toolkit1072026年6月18日 更新

Run real browser QA with Playwright. Use when testing a frontend feature, verifying UI before PR, smoke testing after deploy, or investigating reported visual bugs.

日本語の概要は準備中です。原文の説明を表示しています。

c0x12c/ai-toolkit1072026年6月18日 更新

CI/CD pipeline patterns for GitHub Actions, PR automation, and deployment workflows. Use when setting up CI, fixing broken pipelines, automating PR checks, or configuring deployment.

日本語の概要は準備中です。原文の説明を表示しています。

c0x12c/ai-toolkit1072026年6月18日 更新

Deep competitor analysis. Tear apart a specific competitor or compare multiple competitors. Use when the user names a competitor or asks "who else is doing this?"

日本語の概要は準備中です。原文の説明を表示しています。

c0x12c/ai-toolkit1072026年6月18日 更新

c0x12c のスキルをすべて見る

このスキルの問題を報告する