| name | backend-planner |
| description | This skill should be used when the user describes a feature or product requirement in rough, informal language (Korean or English) and wants it translated into a structured backend implementation prompt. It converts vague planning content into precise domain model, API list, business rules, and Claude implementation commands following the bitda-back hexagonal architecture patterns (Kotlin/Spring Boot, DDD, CQS). |
Backend Planner
Convert rough product planning input into a structured backend design and ready-to-use Claude implementation prompt, following bitda-back's hexagonal architecture.
When to Use
Trigger when the user says things like:
- "~๊ธฐ๋ฅ ๋ง๋ค์ด์ค", "~๊ด๋ฆฌ ํ๋ฉด์ด ํ์ํด"
- "๊ธฐํ์ ์ด๋: ..."
- "์ด๋ฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ํด?"
- Any informal Korean/English description of a product requirement without structured API/DB design
Workflow
Step 1: Load the Reference
Load references/design-framework.md before processing any input. It contains the translation rules, output format templates, and Claude prompt template.
Step 2: Clarify if Needed
If the input is too vague to produce a design, ask at most two focused questions before proceeding. Examples:
- "์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋์?" (ํ์ ํ๋๊ฐ ๋ถ๋ถ๋ช
ํ ๋)
- "์ด๋ค ์กฐ๊ฑด์ผ๋ก ์์ /์ญ์ ๊ฐ ์ ํ๋๋์?" (์ํ ์ ์ด๊ฐ ๋ถ๋ถ๋ช
ํ ๋)
- "๋ค๋ฅธ ๋๋ฉ์ธ(์ฌ๊ณ , ํ๊ณ ๋ฑ)์ ์ํฅ์ ์ฃผ๋์?" (์ด๋ฒคํธ ๋ฒ์๊ฐ ๋ถ๋ถ๋ช
ํ ๋)
If it is possible to make reasonable assumptions, state them and proceed rather than asking.
Step 3: Produce the Design Output
Generate the full structured design using the 7-section format from references/design-framework.md:
- ๋๋ฉ์ธ ์ธ์ด ์ ์
- ๋ฐ์ดํฐ ๋ชจ๋ธ (Aggregate ๊ตฌ์กฐ + DB ํ
์ด๋ธ)
- API ๋ชฉ๋ก
- ํต์ฌ API ์์ฒญ/์๋ต (POST + ๋ชฉ๋ก GET๋ง)
- ๋น์ฆ๋์ค ๊ท์น (๊ฒ์ฆ/์ํ/์ค๋ณต/์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ)
- ์ด๋ฒคํธ ์ ์
- UseCase ๋ชฉ๋ก (Command/Query ๋ถ๋ฆฌ)
Step 4: Generate the Implementation Prompt
After the design, produce a ready-to-copy Claude implementation prompt in a fenced code block.
The prompt must:
- Say "๊ธฐ์กด ProductionInbound ๋๋ฉ์ธ ํจํด์ ์ฐธ๊ณ ํด์ ๋์ผํ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ค"
- Include the Aggregate structure with all fields
- Include UseCase list with Command/Query/Returns
- Include key business rules inline
- End with the implementation order: Domain โ UseCase โ Infrastructure โ API
Output Structure
## ์ค๊ณ ๊ฒฐ๊ณผ
### 1. ๋๋ฉ์ธ ์ธ์ด
[table]
### 2. ๋ฐ์ดํฐ ๋ชจ๋ธ
[Aggregate ๊ตฌ์กฐ + DB ์ปฌ๋ผ ๋ชฉ๋ก + ์ ์ฝ]
### 3. API ๋ชฉ๋ก
[table: ๊ธฐ๋ฅ | ๋ฉ์๋ | URL | ํ์
]
### 4. ํต์ฌ API ์์ฒญ/์๋ต
[POST ์์ฒญ/์๋ต, ๋ชฉ๋ก GET ์๋ต]
### 5. ๋น์ฆ๋์ค ๊ท์น
[๋ฒํธ ๋ชฉ๋ก, [๊ฒ์ฆ]/[์ํ]/[์ค๋ณต] ํ๊ทธ]
### 6. ์ด๋ฒคํธ
[์ด๋ฒคํธ๋ช
+ ํ๋, ์์ผ๋ฉด "์ด๋ฒคํธ ์์"]
### 7. UseCase ๋ชฉ๋ก
[Command / Query ๋ถ๋ฆฌ ํ]
---
## Claude ๊ตฌํ ํ๋กฌํํธ
(๋ณต์ฌํด์ ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋กฌํํธ)
Quality Checklist
Apply these rules to every output โ they reflect bitda-back's mandatory conventions:
organizationId is always in every Aggregate (multi-tenant)
- DB tables always include
created_at, updated_at, version columns
- Soft delete โ
deleted_at TIMESTAMPTZ NULL; hard delete โ omit
- List APIs always include
page / size query params
- Dates:
Instant in domain, TIMESTAMPTZ in DB, ISO-8601 Z in API responses
- Service implementations are
internal class
- Command UseCase returns
UUID (create) or Unit (update/delete)
- UNIQUE constraints always scoped by
organization_id