
controller-generation
by griffnb
Claude Plugins
SKILL.md
name: controller-generation description: Code generation for CRUD endpoints
Controller Code Generation
The system uses core_generate to automatically create standard CRUD operations for controllers.
Code Generation Command
Add this directive to the controller folders setup.go file:
//go:generate core_gen controller Account -modelPackage=account
Parameters:
controller- Command typeAccount- Model name (PascalCase)-modelPackage=account- Package name containing the model-options=adminif its an admin only controller-skip=xxxYYY,aaaBBBskip generating this function because we need to customize it
Generated Files
Running go generate creates two files:
x_gen_admin.go - Admin CRUD handlers:
adminIndex- List all resourcesadminGet- Get single resourceadminCreate- Create new resourceadminUpdate- Update existing resourceadminCount- Get total count
(optionally)
x_gen_auth.go - Public CRUD handlers:
authIndex- List resources (filtered to user's data)authGet- Get single resource (with ownership check)authCreate- Create new resourceauthUpdate- Update resource (with ownership check)
Generated Endpoints
| Method | Admin Route | Public Route | Function | Description |
|---|---|---|---|---|
| GET | /admin/account | /account | adminIndex, authIndex | List resources |
| GET | /admin/account/{id} | /account/{id} | adminGet, authGet | Get single resource |
| POST | /admin/account | /account | adminCreate, authCreate | Create new resource |
| PUT | /admin/account/{id} | /account/{id} | adminUpdate, authUpdate | Update resource |
| GET | /admin/account/count | - | adminCount | Get total count |
| GET | /admin/account/_ts | - | TypeScript | TS type generation |
Skipping Endpoints
You can disable specific endpoints using the -skip parameter:
//go:generate core_gen controller AiTool -modelPackage=ai_tool -skip=authCreate,authUpdate
This will generate all endpoints except authCreate and authUpdate.
Available Skip Options:
adminIndex- Skip admin list endpointadminGet- Skip admin get endpointadminCreate- Skip admin create endpointadminUpdate- Skip admin update endpointadminCount- Skip admin count endpointauthIndex- Skip public list endpointauthGet- Skip public get endpointauthCreate- Skip public create endpointauthUpdate- Skip public update endpoint
Common Skip Patterns
Read-only public endpoint:
//go:generate core_gen controller Config -modelPackage=config -skip=authCreate,authUpdate
Admin-only resource:
//go:generate core_gen controller SystemLog -modelPackage=system_log -options=admin
Customizing Generated Code
DO NOT edit generated files directly. They will be overwritten on next generation.
Instead, create custom handlers in separate files, name them accordingly auth.go open.go admin.go
if theres lots of functions, group them together by relation then use a prefix, auth_password.go auth_emails.go
custom_handlers.go:
package account
func customSearch(_ http.ResponseWriter, req *http.Request) ([]*account.Account, int, error) {
// Custom search logic here
// ...
}
Then wire up in setup.go:
r.Get("/search", helpers.RoleHandler(helpers.RoleHandlerMap{
constants.ROLE_ANY_AUTHORIZED: response.StandardPublicRequestWrapper(customSearch),
}))
Regenerating Code
Re-run generation after:
- Updating skip parameters
go generate path/to/file
Related Skills
- controller-handlers - Writing custom handlers
- controller-roles - Role-based access control
Additional resources
- For usage examples, see examples.md
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon