create-controller-listing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited create-controller-listing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Read @.ai/Component/Controller/CONTEXT.md for controller conventions (base class, DI, security attributes, error mapping). Read @.ai/Component/Grid/CONTEXT.md for grid patterns (definition factory, query builder, filters).
#[AdminSecurity("is_granted('read', request.get('_legacy_controller'))")]
public function indexAction({Domain}Filters $filters): Response{Domain}Filters class as action argument — automatically resolved by the argument resolverSearchCriteria construction neededReference: TaxController::indexAction(), ManufacturerController::indexAction()
CommonController::searchGridAction saves and applies grid filters, then redirects back to the domain's index action. A domain-specific route must be defined pointing to this generic controller action (see create-admin-routing)admin_common_reset_search_by_filter_id — no domain-specific route or controller code needed. Referenced from the GridDefinition#[AdminSecurity("is_granted('delete', request.get('_legacy_controller'))")]
public function deleteAction(int ${domain}Id): RedirectResponseDelete{Domain}Command via command bus{Domain}NotFoundException and CannotDelete{Domain}Exception#[AdminSecurity("is_granted('update', request.get('_legacy_controller'))")]
public function toggleStatusAction(int ${domain}Id): JsonResponseToggle{Domain}StatusCommand via command busJsonResponse (AJAX grid toggle switch)Create one method per bulk action the grid defines — not all entities have the same set:
#[AdminSecurity("is_granted('delete', request.get('_legacy_controller'))")]
public function bulkDeleteAction(Request $request): RedirectResponseCommon pattern for all bulk actions:
See Controller/CONTEXT.md for all conventions (Filters argument, bulk exception handling, toggle JSON). Skill-specific reminder:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.