mysql-problem-solver — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited mysql-problem-solver (Agent Skill) and scored it 91/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} is the classic direct prompt-injection phrasing. Placed in a skill body that the agent reads as trusted instructions, it tries to make the agent abandon its prior rules and follow whatever comes next — a full system-prompt override.
ignore/disregard/forget … previous instructions sentence.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.
Investigate real MySQL performance or query design problems in existing applications.
Focus on:
@rules/laravel/laravel.mdc, @rules/laravel/architecture.mdc, @rules/laravel/filament.mdc, and @rules/laravel/livewire.mdc@rules/sql/optimalize.mdc "Performance Non-Regression on Query Changes" — every proposed query rewrite must be at least as fast as the original (ideally faster); a proposal that is slower must carry the documented reason and the remaining optimization optionsEXPLAINLook for:
@rules/sql/optimalize.mdc "Reuse existing indexes first").update() / create() / delete() or single-row reads driven by a foreach (distinct from N+1 eager-loading: this is application code intentionally writing or reading row-by-row when a single batch query would suffice)ascii column compared against a non-ASCII value raises ERROR 1267 instead of returning no rows@rules/sql/optimalize.mdc "Schema Design"): an oversized primary key copied into every secondary index, an unjustified VARCHAR(255) inflating sort buffers and temporary tables, TIMESTAMP columns converting per row by session time zone, or FLOAT / DOUBLE where DECIMAL belongsBefore recommending any rewrite, capture the baseline of the original query (EXPLAIN / EXPLAIN ANALYZE — type, key, rows, filtered, Extra, measured latency when DB access is available). Every proposal must then be held against that baseline per @rules/sql/optimalize.mdc "Performance Non-Regression on Query Changes":
type, index usage, filesort / temporary avoidance, and latency.Recommend only justified changes, such as:
SHOW INDEX before proposing a new one; reorder WHERE / JOIN / ORDER BY columns to match an existing composite index, drop functions wrapping indexed columns, and project only columns the index already covers)batchUpdate, batchInsert), whereIn(...)->delete() for deletes, or one bulk read keyed in memory for lookups (see @rules/sql/optimalize.mdc "Batch over per-row operations")@rules/sql/optimalize.mdc "Schema Design")Explain trade-offs:
Run this step whenever the input includes DDL — a migration file, Schema::create / Schema::table / Schema::drop* / Schema::rename*, a DB::statement carrying DDL, or raw ALTER TABLE / CREATE INDEX. A statement that is instant on an empty dev database can lock a populated production table, break the release still serving traffic, or fail halfway with no way back, so judge every statement against @rules/sql/optimalize.mdc Deployment Safety of Schema Changes:
ENUM) shipped in the same release as the code that reads the old surface — propose the expand / contract splitALGORITHM=COPY, or an index build states no algorithm / lock mode — propose the explicit ALGORITHM=INSTANT / ALGORITHM=INPLACE, LOCK=NONE statement, or the pt-online-schema-change / gh-ost commanddown() missing, empty, or not restoring the prior structure, and structure changes with no Schema::has*() guard to survive a replay after a failed deployNOT NULL / UNIQUE / CHECK / foreign key on a populated table with no pre-flight — propose the counting query that finds the violating rows, then remediation, then the constraintReport each one as a finding with its concrete artifact, the same way step 5 reports an optimization.
When the input is Laravel code, also inspect:
with() / eager loadingwhereHas() / nested filterswithCount()chunk() vs cursor() vs paginationWhen terminal access is available, inspect DB connection details from:
.envconfig/database.phpUse MySQL tools when possible for:
SHOW CREATE TABLESHOW INDEXEXPLAINIf access fails, continue statically and say so.
Use the template defined in templates/analysis-report.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.