跳到正文
cccskills
免费在 GitHub 公开

sql-writing

Use when writing raw SQL — MariaDB/MySQL syntax, parameterization, raw migrations, seeders with `DB::statement`; fires even on a pasted query asking 'why is this slow'.

中文简介正在准备中。当前显示原文说明。

集成工具PostgreSQLMySQL
查看安装方法

包含的文件(2)

  • SKILL.md3.6 KB
  • evals/triggers.json3.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

sql

Grounded corpus: tuning decisions (indexes, keyset pagination, N+1, trigram search, lock contention) ground via the database corpus — node <skills-root>/corpus-grounding/scripts/ground.mjs search --manifest <skills-root>/database/data/manifest.json "<symptom>".

When to use

Use when writing or reviewing raw SQL queries, migrations with raw statements, or seeders with raw SQL.

Do NOT use when:

  • Eloquent/Query Builder queries (use eloquent or database skill)
  • Schema design (use database skill)

Procedure: Write raw SQL

  1. Inspect call site & choose approach — identify every dynamic value flowing into the query, then pick: query builder when possible. Raw SQL only when query builder can't express the query.
  2. Parameterize — Every variable must use ? binding or named :param. Never interpolate PHP variables into SQL strings.
  3. Read the engine, then choose the syntax — check, in order: the project's DB config (config/database.php default connection, DB_CONNECTION), a docker-compose.yml service image, a migration using engine-specific syntax. MySQL and MariaDB share the query-syntax world this skill writes in; PostgreSQL and MSSQL do not. If none of those declare an engine, say so and ask — do not assume one. A query written for the wrong engine passes review and fails in production.
  4. Verify — Run EXPLAIN on complex queries. Check that no PHP interpolation ("$var", '{$var}') appears in SQL.
NEVER build SQL strings with PHP variable interpolation or concatenation.
ALWAYS use parameterized queries or query builder.

Conventions

→ See guideline php/sql.md for parameterization patterns, common mistakes, MariaDB syntax reference.

Quick reference

// ✅ Safe
DB::select('SELECT * FROM users WHERE email = ?', [$email]);

// ❌ SQL injection
DB::select("SELECT * FROM users WHERE email = '{$email}'");

Validate

  1. Verify every variable in SQL uses parameter binding (? or named :param).
  2. Confirm MariaDB/MySQL syntax — not PostgreSQL or MSSQL.
  3. Run EXPLAIN on complex queries to check index usage.
  4. Check that no PHP variable interpolation ("$var", '{$var}') appears in SQL strings.

Output format

  1. Parameterized SQL query using MariaDB/MySQL syntax
  2. EXPLAIN output for performance-critical queries

Gotcha

MySQL and MariaDB share a query-syntax world. They never share a migration one. Same principle as database: one engine for writing a SELECT, two for online-DDL semantics, lock behavior under ALTER, feature availability and EXPLAIN output. Never carry a claim from the second group across the two without naming the engine and version it was measured on.

  • MariaDB and MySQL have subtle syntax differences.
  • The model writes $variable in SQL strings instead of ? placeholders.
  • GROUP BY with ONLY_FULL_GROUP_BY requires all non-aggregated columns.
  • Use SQL types (NULL, 1/0, JSON_ARRAY()) — not PHP equivalents.

Do NOT

  • Do NOT interpolate PHP variables into SQL strings — always parameterize.
  • Do NOT use PHP syntax (arrays, booleans, null) in raw SQL — use SQL equivalents.
  • Do NOT write raw SQL when the query builder can express the same thing clearly.

Auto-trigger keywords

  • raw SQL
  • SQL query
  • parameterized query
  • MariaDB syntax
  • SQL injection

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.

中文简介正在准备中。当前显示原文说明。

event4u-app/agent-config122026年10月21日 更新

Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.

中文简介正在准备中。当前显示原文说明。

event4u-app/agent-config122026年10月21日 更新

Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.

中文简介正在准备中。当前显示原文说明。

event4u-app/agent-config122026年10月21日 更新

Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.

中文简介正在准备中。当前显示原文说明。

event4u-app/agent-config122026年10月21日 更新

Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.

中文简介正在准备中。当前显示原文说明。

event4u-app/agent-config122026年10月21日 更新

Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.

中文简介正在准备中。当前显示原文说明。

event4u-app/agent-config122026年10月21日 更新

查看 event4u-app 的全部技能

报告此技能的问题