← Back to list

create-controller
by hieupvXmasEve
⭐ 0🍴 0📅 Jan 6, 2026
SKILL.md
name: create-controller description: Generates a standard Controller class. Use when creating API or Web endpoints (e.g., "Create a controller for managing courses"). allowed-tools: Write, Read
Create Controller
This skill generates a standardized Controller class that acts as a "Thin Adapter" in the Modular Monolith architecture.
Instructions
-
Identify Parameters:
- Module: (e.g.,
Academic,Identity). - Type:
Web(Inertia/Stateful) orApi(JSON/Stateless). - Portal:
Admin,Student,Lecturer. - Entity: (e.g.,
Course,Student). - Path:
app/Modules/{Module}/Http/Controllers/{Type}/{Portal}/{Entity}Controller.php.
- Module: (e.g.,
-
Generate Code:
- Namespace:
App\Modules\{Module}\Http\Controllers\{Type}\{Portal} - Strict Rule: Controllers must NOT contain business logic.
- Pattern:
- Validate using
FormRequest. - Execute logic using
Action::run($data)orQuery->handle(). - Return
Inertia::render()(Web) orresponse()->json()(Api).
- Validate using
- Namespace:
Template (Web - Admin)
<?php
namespace App\Modules\Academic\Http\Controllers\Web\Admin;
use App\Http\Controllers\Controller;
use App\Modules\Academic\Models\Course;
use App\Modules\Academic\Queries\ListCoursesQuery;
use App\Modules\Academic\Actions\CreateCourseAction;
use App\Modules\Academic\Http\Requests\Academic\CreateCourseRequest;
use Inertia\Inertia;
use Inertia\Response;
class CourseController extends Controller
{
public function index(ListCoursesQuery $query): Response
{
// 1. Authorize (Gate/Policy)
// $this->authorize('viewAny', Course::class);
// 2. Query Data
$courses = $query->handle();
// 3. Return View
return Inertia::render('Academic/Course/Index', [
'items' => $courses,
]);
}
public function store(CreateCourseRequest $request): mixed
{
// 1. Authorization handled in FormRequest or Policy
// 2. Execute Action
CreateCourseAction::run($request->validated());
// 3. Return Response
return to_route('academic.courses.index')
->with('success', 'Course created successfully.');
}
}
Best Practices
- Dependency Injection: Inject Queries into methods or constructor.
- No DB Logic: Never call
Course::create()orDB::transaction()here. - Authorization: Use
$this->authorize()for policies.
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon