@gallopsystems/agent-skills 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gallopsystems/agent-skills",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Gallop Systems agent skills, symlinked into .claude/skills (Claude Code) and .agents/skills (Codex) on install.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -102,6 +102,29 @@ function isActiveUser() {
102
102
  }
103
103
  ```
104
104
 
105
+ A predicate helper can also return a callback that receives the query's
106
+ `eb`, so the same helper works in any `.where()`/`.having()` on that table:
107
+
108
+ ```typescript
109
+ import type { ExpressionBuilder } from "kysely";
110
+
111
+ // AVOID - raw sql means the column name is an unchecked string.
112
+ // A typo or renamed column only fails at runtime.
113
+ function nameMatches(name: string) {
114
+ return sql<boolean>`lower(name) = ${name.toLowerCase()}`;
115
+ }
116
+
117
+ // PREFER - eb.fn keeps the column reference type-checked against DB,
118
+ // and the value stays parameterized.
119
+ function nameMatches(name: string) {
120
+ return (eb: ExpressionBuilder<DB, "user">) =>
121
+ eb(eb.fn("lower", ["name"]), "=", name.toLowerCase());
122
+ }
123
+
124
+ // Both call sites stay identical:
125
+ db.selectFrom("user").where(nameMatches(input)).execute();
126
+ ```
127
+
105
128
  ### Conditional Expressions with Arrays
106
129
 
107
130
  Build dynamic filters by collecting expressions: