Naming convention for type-translation files and functions. Use when creating or editing files that convert between domain, API, and DB types.
76
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Apply to new and touched code. Do not rename legacy symbols unsolicited.
| Path contains | File name | Purpose |
|---|---|---|
httpdriver/, httphandler/, api/v3/handlers/ | convert.go | API ↔ domain |
adapter/, repo/ | mapping.go | DB ↔ domain |
Split large files by entity: convert_plan.go, mapping_subscription.go.
mapper.go is forbidden. Rename it to convert.go or mapping.go (based on layer) when the file is touched.
From<Qualifier><Thing> / To<Qualifier><Thing>The qualifier is API or DB — no other qualifiers (Domain, Model, package-name infixes).
The suffix <Thing> is the non-domain type's unqualified name — the API type or DB type, not the domain type. This keeps it stable: a matched pair (FromAPI<Thing> / ToAPI<Thing>) always refers to the same non-domain type, regardless of direction.
FromAPI<Thing> — takes the API type <Thing> as input, returns the domain representation.ToAPI<Thing> — takes the domain type as input, returns the API type <Thing>.FromDB<Thing> / ToDB<Thing>.// API ↔ domain
FromAPIPlan(a api.Plan) (plan.Plan, error)
ToAPIPlan(p plan.Plan) api.Plan
// Suffix is the API type name, even when domain type differs
FromAPIPlanCreate(a api.PlanCreate) (plan.CreateInput, error)
ToAPIPlanCreate(p plan.CreateInput) api.PlanCreate
FromAPIProRatingConfig(a api.ProRatingConfig) (productcatalog.ProRatingConfig, error)
ToAPIProRatingConfig(p productcatalog.ProRatingConfig) *api.ProRatingConfig
// DB ↔ domain — suffix is the DB type name
FromDBSubscription(row *db.Subscription) (subscription.Subscription, error)
ToDBSubscription(s subscription.Subscription) *db.Subscription
FromDBChargeFlatFee(row *entdb.ChargeFlatFee) (flatfee.Charge, error)
ToDBChargeFlatFee(c flatfee.Charge) *entdb.ChargeFlatFeeFromAPIPlanCreate, not bare FromAPI).fromDB, toAPI).(T, error). Infallible (projection) → T. Typically FromAPI… / FromDB… is fallible; the reverse is not.FromAPIPlans, ToDBSubscriptions. Same suffix rule — the plural of the non-domain type name.Map…, Convert…To…, primary As…<Source>To<Target> shape (e.g. APIToPlan)FromAPI / ToDB without a type suffixAPI. DB/persistence on one side → DB.Plan, PlanCreate, ChargeFlatFee).(T, error), infallible → T.mapper.go? Flag it — should be convert.go or mapping.go based on layer. Offer to rename as part of the edit. Don't rename silently.Grep for the old name to catch misses, keep the rename in its own commit.// Code generated header? Off-limits regardless.Lead with the specific rename and the reason. Keep it short.
MapChargeFlatFeeFromDB— useFromDBChargeFlatFee. Want me to rename and update callers?
Direction looks inverted —
FromAPI…returns a domain type, so this should beToAPIPlan. Drop the error return if it can't actually fail.
This file is
mapper.go— should beconvert.gosince it lives inhttphandler/. Want me to rename it?
1cdc2cb
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.