@malloy-publisher/skills 0.1.17 → 0.1.19

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.
Files changed (39) hide show
  1. package/package.json +2 -2
  2. package/skills/eval-answer/SKILL.md +1 -1
  3. package/skills/eval-diagnose/SKILL.md +1 -1
  4. package/skills/eval-import/SKILL.md +1 -1
  5. package/skills/eval-improve/SKILL.md +1 -1
  6. package/skills/eval-judge/SKILL.md +1 -1
  7. package/skills/eval-loop/SKILL.md +1 -1
  8. package/skills/malloy/SKILL.md +1 -1
  9. package/skills/malloy-analysis/SKILL.md +1 -1
  10. package/skills/malloy-analysis-pitfalls/SKILL.md +1 -1
  11. package/skills/malloy-analysis-report/SKILL.md +1 -1
  12. package/skills/malloy-analyze/SKILL.md +1 -1
  13. package/skills/malloy-charts/SKILL.md +1 -1
  14. package/skills/malloy-dashboards/SKILL.md +53 -48
  15. package/skills/malloy-debug/SKILL.md +1 -1
  16. package/skills/malloy-define/SKILL.md +1 -1
  17. package/skills/malloy-discover/SKILL.md +1 -1
  18. package/skills/malloy-document/SKILL.md +1 -1
  19. package/skills/malloy-getting-started/SKILL.md +1 -1
  20. package/skills/malloy-gotchas-modeling/SKILL.md +1 -1
  21. package/skills/malloy-gotchas-queries/SKILL.md +1 -1
  22. package/skills/malloy-gotchas-rendering/SKILL.md +1 -1
  23. package/skills/malloy-html-data-app-embedding/SKILL.md +1 -1
  24. package/skills/malloy-html-data-app-runtime/SKILL.md +1 -1
  25. package/skills/malloy-html-data-apps/SKILL.md +1 -1
  26. package/skills/malloy-lookml-review/SKILL.md +1 -1
  27. package/skills/malloy-materialization/SKILL.md +1 -1
  28. package/skills/malloy-materialization-tuning/SKILL.md +5 -10
  29. package/skills/malloy-model/SKILL.md +1 -1
  30. package/skills/malloy-model-as-you-go/SKILL.md +1 -1
  31. package/skills/malloy-modeling/SKILL.md +1 -1
  32. package/skills/malloy-notebook-chat/SKILL.md +1 -1
  33. package/skills/malloy-notebooks/SKILL.md +1 -1
  34. package/skills/malloy-patterns/SKILL.md +1 -1
  35. package/skills/malloy-phrase-detection/SKILL.md +1 -1
  36. package/skills/malloy-publish/SKILL.md +1 -1
  37. package/skills/malloy-queries/SKILL.md +1 -1
  38. package/skills/malloy-review/SKILL.md +1 -1
  39. package/skills/malloy-scope/SKILL.md +1 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@malloy-publisher/skills",
3
3
  "description": "Agent skills for Malloy and the Malloy Publisher",
4
- "version": "0.1.17",
4
+ "version": "0.1.19",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "typecheck": "bunx tsc --noEmit",
42
42
  "lint": "bunx eslint ./src ./scripts --fix",
43
43
  "format": "bunx prettier --write --parser typescript '{src,scripts}/**/*.ts'",
44
- "test": "bun run copy-skills && bun test src"
44
+ "test": "bun run copy-skills && bun test ./src"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@eslint/js": "^8.57.0",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: eval-answer
3
3
  description: 'Score one analytical answer against a verified golden, and score which of the entities the golden depends on retrieval delivered to the answerer. Run the contamination checklist, re-execute the submitted query yourself, then spawn a judge subagent per skill:eval-judge. Append attempt, tool_call, score, and retrieval_score events to the file ledger (reference/ledger-schema.md). Never explain the failure (eval-diagnose) or edit the model (eval-improve). Use when asked whether an answer was correct, to score a run, or to baseline a model.'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  # Evaluate One Answer
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: eval-diagnose
3
3
  description: 'Diagnose why a scored answer failed and who owns the fix, then cluster the failures by shared root cause. Walk dataset, agent-call, get_context/model, get_context/retrieval, construction, then model-definition. Append issue events to the file ledger, linked by traceId, one per cluster. Use after eval-answer, when triaging a run, or before changing a model. Does not edit the model (eval-improve).'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  # Diagnose One Answer
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: eval-import
3
3
  description: 'Turn a list of questions into an eval set, whatever shape it arrived in: a JSONL a customer sent, a CSV, a spreadsheet export, a markdown doc, an email thread, or a pull from production logs. Classify each item by what came WITH the question (a query, a number, prose criteria, or nothing), write cases.jsonl and set.json per reference/case-format.md, keep the file as it arrived, and seal each question so a later edit is detectable. Never marks a value-bearing golden verified and never invents a question. Use when questions arrive from outside and need to become a set, or before the first run against a set nobody here authored.'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  # Import questions into an eval set
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: eval-improve
3
3
  description: 'Make the smallest safe Malloy model edit that closes a diagnosed model-owned gap, with a probe receipt for every factual claim. Use after eval-diagnose, or when asked to fix a model so an agent can discover the right answer. Never accepts its own edit; the acceptance check belongs to eval-loop. Does not decide whether an answer was wrong (eval-answer) or why (eval-diagnose).'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  # Improve the Model
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: eval-judge
3
3
  description: 'Decide whether ONE answer matches its golden, and say whether you believe the golden. Read this before emitting any verdict. Covers containment, column pairing, near_match, refusals, and the gold_status judgement. Use when scoring an attempt in an evaluation run; never to conduct a run (eval-loop), diagnose a failure (eval-diagnose) or edit a model (eval-improve).'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  # The judge
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: eval-loop
3
3
  description: 'Conduct a local Publisher evaluation loop in five steps: scrape/run, eval, diagnose, improve, checkpoint. You are the conductor: import cases into the file ledger, spawn a blind answerer, then run eval-answer, eval-diagnose, and eval-improve. Persistence is plain files under the model package''s evals/ directory; checkpoints are git commits of the model repo. Use to score a model, diagnose failures, improve behind an acceptance check, or roll back a bad direction.'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  # The Evaluation Loop
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy
3
3
  description: Index of all Malloy skills. Use when user asks "malloy help", "what malloy skills are available", "how do I use malloy", or needs guidance on which Malloy skill to use.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-analysis
3
3
  description: Workflow for answering data questions against Malloy semantic models over MCP - structured discovery with get_context, query construction with execute_query, verification, and answer delivery. Use whenever the user asks a data question, wants a metric, a breakdown, a trend, or a chart over a model.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  <!--
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-analysis-pitfalls
3
3
  description: Common data analysis pitfalls to watch for during query construction and result interpretation. Reference this checklist when verifying queries and results to catch errors before presenting an answer.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-analysis-report
3
3
  description: Combine validated Malloy queries into a notebook report or dashboard. Use when the user asks to "create a report", "build a dashboard", "combine these into a report", or wants a persistent multi-query artifact.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-analyze
3
3
  description: Open-ended exploration with no specific question to answer, and building views/dashboards/notebooks on an existing model. Use when the user asks "what's interesting?", "explore this data", "find insights", "look for patterns", "build a dashboard", or "create views". Not for a specific data question - answering one is `malloy-analysis`, and writing down what the answer assumed is `malloy-model-as-you-go`. For exploration start at Step 1; for views on an existing model jump to View Patterns.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-charts
3
3
  description: Chart selection guidance and renderer reference for Malloy views. Use when choosing visualization types, adding chart annotations, user asks "what chart should I use", "how should I visualize this", or when deciding between bar_chart, line_chart, scatter_chart, etc.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-dashboards
3
3
  description: "Build or modify a Malloy Publisher dashboard, a tagged .malloy file in a package's dashboards/ directory, with auto-rendered filter controls, a grid layout, and # drill click-through. Use when the user asks for a dashboard, a filterable operational view, or drill-through between views, and no code is wanted."
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  <!--
@@ -35,14 +35,18 @@ Scanned at a glance is a dashboard; read top to bottom is a notebook.
35
35
  2. **PICK THE VIEWS TO SHOW.** A dashboard is `## artifact { tiles=[…] }` naming existing views, so
36
36
  this is the design step: which views, how wide each sits, what each is called. There is one form,
37
37
  so there is no form to choose.
38
- 3. **DECLARE THE GIVENS** the dashboard will filter by, in the model (usually `givens.malloy`), with
39
- their control tags: see "Filter controls" below for the syntax and what each tag renders as. Skip
40
- if they already exist, since a given is a model concern and dashboards share them.
38
+ 3. **DECLARE THE GIVENS** the dashboard will filter by, in the dashboard file itself, with their
39
+ control tags: see "Filter controls" below for the syntax and what each tag renders as. That is
40
+ the convention because the dashboard builder edits the dashboard file and nothing else, so a
41
+ filter it can add, change or remove is a declaration in that file. Bind them on the tiles (step
42
+ 4). Reuse the package's `givens.malloy` only for a control several surfaces genuinely share, and
43
+ then import it whole, knowing the builder can bind those givens but not edit them.
41
44
  4. **COMPOSE THE FILE** for `dashboards/`, following the template below, but do not save it yet.
42
- Import the package's givens file **whole**: `import '../givens.malloy'`, not a named list.
43
- Only the givens the tiles reference become controls, so a whole-file import brings nothing
44
- extra, and a named list is one more thing to forget; forgetting one costs you a missing control
45
- rather than an error. Sources are the other way round: name the few you need. Then import every
45
+ Name the sources you need: `import { order_items, products } from '../storefront.malloy'`.
46
+ Each tile binds its controls with a refinement, `view: t is v + { where: category ~ $CATEGORY }`,
47
+ one clause per given it answers to; a `filter<...>` binds with `~`, a plain `date` or `number`
48
+ given is a value and binds with `>=`, `<=` or `=`. Only the givens some tile references become
49
+ controls, so a declaration nothing binds shows nothing. Then import every
46
50
  source or query any referenced given names in a `suggest`. Both are per-file, and getting the
47
51
  suggest wrong does not error: the control still looks like a picker but has no options, and says
48
52
  so underneath, "Could not load the options for this control". The package warnings name it too. **A `suggest` naming a `query=` needs that
@@ -77,33 +81,31 @@ out by Publisher into the grid `# dashboard { columns=N }` names.
77
81
  ```malloy
78
82
  ##! experimental.givens
79
83
  ## artifact { title="Storefront overview" tiles=["overview -> kpis", "overview -> revenue_trend", "overview -> revenue_by_state"] } dashboard { columns=12 }
80
- import { scoped_sales } from './_shared.malloy'
81
- import { products } from '../storefront.malloy'
82
- import '../givens.malloy'
84
+ import { order_items, products } from '../storefront.malloy'
85
+
86
+ // The controls, declared here: the tags are each one's control contract.
87
+ # label="Category" control=select suggest { source=products dimension=category }
88
+ given: CATEGORY :: filter<string> is f''
89
+ # label="Ordered since"
90
+ given: SINCE :: date is @2023-01-01
83
91
 
84
92
  // Layout goes on the VIEW, and a thin re-declaration is the place to put it: the
85
- // modelled view keeps its chart tag, and this decides how wide it sits here.
86
- source: overview is scoped_sales extend {
93
+ // modelled view keeps its chart tag, this decides how wide it sits here, and the
94
+ // `+ { where: ... }` says which controls the tile answers to.
95
+ source: overview is order_items extend {
87
96
  # colspan=12
88
97
  # label="Key figures"
89
98
  # big_value
90
- view: kpis is {
91
- aggregate:
92
- # label="Revenue"
93
- # currency
94
- total_sales
95
- # label="Orders"
96
- order_count
97
- }
99
+ view: kpis is key_figures + { where: category ~ $CATEGORY, where: created_at >= $SINCE }
98
100
 
99
101
  # colspan=8
100
102
  # break
101
103
  # label="Revenue by month"
102
- view: revenue_trend is sales_by_month
104
+ view: revenue_trend is sales_by_month + { where: category ~ $CATEGORY, where: created_at >= $SINCE }
103
105
 
104
106
  # colspan=4
105
107
  # label="Revenue by state"
106
- view: revenue_by_state is sales_by_state
108
+ view: revenue_by_state is sales_by_state + { where: category ~ $CATEGORY, where: created_at >= $SINCE }
107
109
  }
108
110
  ```
109
111
 
@@ -116,8 +118,8 @@ Three things the form costs, so you are not surprised by them:
116
118
  - **A tile expression is a string in an annotation, so the compiler never checks it.** Rename a view
117
119
  and the file still compiles; the tile fails at package load. Read the lint (step 6).
118
120
  - **No per-parent-row grouping.** There is no parent query to repeat a grid over.
119
- - **Filtering lives in what the tiles name**, not on the page. That is the shared include's job,
120
- below.
121
+ - **Filtering lives on the tiles**, not on the page: each view's `+ { where: ... }` names the
122
+ controls it answers to. Below is why, and the one thing that does not work.
121
123
 
122
124
  ### Also served: `# artifact` on a `query:`
123
125
 
@@ -177,23 +179,24 @@ object", so a dashboard has no description as a result.
177
179
 
178
180
  ### Where the filtering goes
179
181
 
180
- A dashboard has no query, so the filtering it applies must live in what it composes: a source that
181
- already has the givens applied. Put it in an untagged `dashboards/_shared.malloy`, which discovery
182
- treats as a shared include rather than a dashboard. **It has to apply every given the dashboard
183
- imports**: a given the dashboard imports but nothing references gets no control, silently, at reload
184
- 200 with no warning. Note `SINCE` is a `date` rather than a `filter<>`, so it compares with `>=`
185
- rather than `~`. Save the include before you compile the dashboard that imports it, since an importer
186
- compiled against a sibling that is not on disk fails with an `import-error`.
187
-
188
- ```malloy
189
- ##! experimental.givens
190
- import { order_items } from '../storefront.malloy'
191
- import '../givens.malloy'
192
-
193
- source: scoped_sales is order_items extend {
194
- where: products.category ~ $CATEGORY and created_at >= $SINCE
195
- }
196
- ```
182
+ A dashboard has no query, so its filtering lives on the views it names: a `+ { where: field ~ $GIVEN }`
183
+ refinement on each tile, one clause per control the tile answers to. A tile without the clause does
184
+ not move when the control does, which is how a page keeps one tile fixed while the rest filter. The
185
+ givens those clauses read are declared in the same file (step 3).
186
+
187
+ **Binding is per declaration, not per name.** Measured: a dashboard declaring its own `CATEGORY`
188
+ over a source whose model-level `where:` reads the model's `CATEGORY` compiles, shows the control,
189
+ and filters nothing when it moves, because the two declarations only share a name. So do not mix
190
+ the two designs on one given. The other design still works on its own: a source with the givens
191
+ already applied in an untagged `dashboards/_shared.malloy`, reading `import '../givens.malloy'`,
192
+ which discovery treats as a shared include rather than a dashboard. Then the dashboard imports both
193
+ and the controls render for the givens its tiles reach. A given the dashboard imports but nothing
194
+ references gets no control, silently, at reload 200 with no warning. Save the include before you
195
+ compile the dashboard that imports it, since an importer compiled against a sibling that is not on
196
+ disk fails with an `import-error`. The builder can bind such a control but not add, change or
197
+ remove it, since it never edits imports or model files.
198
+
199
+ Note `SINCE` is a `date` rather than a `filter<>`, so it compares with `>=` rather than `~`.
197
200
 
198
201
  **`# dashboard { columns=N }` is the one spelling of the grid width**, on both forms, beside the
199
202
  artifact tag. Anything else inside the artifact tag is a package warning naming it, which is what you
@@ -275,9 +278,10 @@ rows.
275
278
  - **The filename is the dashboard's name:** its URL slug, its listing name, and its `# drill`
276
279
  target. The query inside can be called anything, and sometimes must be (a query named `regions`
277
280
  collides with an imported `regions` source).
278
- - **Importing a given is what makes it bindable.** Malloy's given namespace is per-file. A given the
279
- dashboard file does not import gets no control and cannot be sent to it, even when the `where:`
280
- that references it lives up an import chain. A dashboard must import the givens its tiles use.
281
+ - **A given has to be in the dashboard file's scope to be bindable**: declared there (the
282
+ convention) or imported. Malloy's given namespace is per-file. A given the file cannot see gets
283
+ no control and cannot be sent to it, even when a `where:` that references it lives up an import
284
+ chain. And a given declared here does not drive a `where:` in the model: bind on the tiles.
281
285
  - **A suggest's source or query has to resolve in the dashboard file too.** `suggest { source=products … }`
282
286
  means the dashboard imports `products`.
283
287
  - **A model-level `##` tag must be on one line.** Wrapping one always breaks it, but how you find
@@ -296,9 +300,10 @@ choosing them.
296
300
 
297
301
  ## Filter controls
298
302
 
299
- Controls come from the `given:` declarations the query references, and the tags on the declaration
300
- are the control contract, declared once and identical on every dashboard and in every notebook that
301
- uses them:
303
+ Controls come from the `given:` declarations the tiles reference. Declare them in the dashboard
304
+ file, which is what the builder edits; a package `givens.malloy` is for controls the data app and
305
+ notebooks share, and a dashboard importing it whole gets the same controls but cannot edit them.
306
+ The tags on the declaration are the control contract:
302
307
 
303
308
  ```malloy
304
309
  ##! experimental.givens
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-debug
3
3
  description: Fix Malloy compile errors and understand error messages. Use when encountering errors in .malloy files, user says "fix this error", "malloy error", "compile error", "syntax error", or sees 20+ cascading errors.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-define
3
3
  description: Propose a source plan and field definitions for a Malloy semantic model. Covers picking which sources to model and at what grain, then proposing the specific renames, dimensions, and measures per source, every proposal backed by querying the data.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-discover
3
3
  description: Silent data discovery for Malloy modeling. Used at Step 1 of the modeling workflow. Scans tables, columns, distributions, and relationships without user interaction. The agent builds an internal picture before presenting anything.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-document
3
3
  description: 'Add documentation with #(doc) tags to Malloy models so fields and sources are described in plain language. Use when user asks to "add documentation", "add doc tags", "document the model", or wants fields and sources described for natural-language search and discovery. For declaring parameterizable filters with #(filter), see the malloy-model skill. Filters are a runtime/modeling construct (governance, latency, correctness), not a documentation tag.'
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-getting-started
3
3
  description: First steps for using a Malloy Publisher deployment through its MCP tools. Use when connecting to Publisher for the first time, when you do not yet know the available environments, packages, or models, or when a user asks what data they can explore. Covers verifying the server, discovering data with get_context, and running a first grounded query.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-gotchas-modeling
3
3
  description: Common Malloy modeling mistakes and how to avoid them. Read BEFORE writing source definitions, dimensions, measures, or joins. Covers reserved words, NULL checks, date functions, type casts, field management (extend except/accept/rename vs include public/internal/private), and query-based source gotchas.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-gotchas-queries
3
3
  description: Common Malloy query and view mistakes. Read BEFORE writing views, queries, or notebooks. Covers chart constraints, aggregate filters, joined field aliasing, method syntax, and time truncation vs extraction.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-gotchas-rendering
3
3
  description: Common Malloy renderer annotation mistakes. Read BEFORE adding chart annotations, formatting tags, or building dashboards. Covers tag syntax, scale rules, sparkline setup, and big_value patterns.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-html-data-app-embedding
3
3
  description: Embed an in-package HTML data app into a host page or another application, including auto-sizing and auth. Read when embedding a Publisher page via Publisher.embed.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-html-data-app-runtime
3
3
  description: Write the JavaScript that drives an in-package HTML data app, calling Publisher.query, building queries from filter state, and handling results and errors. Read before writing the page's data code.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-html-data-apps
3
3
  description: Build or modify an in-package HTML data app for a Malloy Publisher package (a public/ directory the package serves). Use when the user wants a hand-authored HTML dashboard or web page backed by a package's Malloy models, with no build step.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-lookml-review
3
3
  description: Analyze LookML files as prior art for Malloy modeling. Used during Step 1 (DISCOVER) when .lkml files are present. Coordinates reference files that extract business logic, relationships, and curation decisions. Works with or without a database connection.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-materialization
3
3
  description: Add and debug Malloy Persistence materializations in a package - persist an expensive source so queries read a pre-built table. Read this whenever the user wants to materialize a source, add a persist annotation, speed up a slow source, or asks why a persist source isn't building.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  name: malloy-materialization-tuning
3
3
  description: Optimize a package's Malloy Persistence materializations for cost and performance using the malloy-pub CLI and the materialization history. Recommend what to persist, what to stop persisting, and how to schedule/scope it. Use when the user asks to make a package cheaper or faster, tune persistence, decide what to materialize, or review persist/schedule choices.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
+
6
7
  <!--
7
8
  Copyright (c) Credible Data Inc.
8
9
  SPDX-License-Identifier: MIT
@@ -33,20 +34,14 @@ Establish what the package persists today and how it is governed.
33
34
 
34
35
  The history is where cost lives. Each run records its trigger, timing, and how many sources were built vs reused.
35
36
 
36
- - **Across the whole environment** (all packages, newest first; the rows are interleaved and labeled by package, not grouped into contiguous per-package blocks):
37
-
38
- ```bash
39
- malloy-pub list materialization --environment <env>
40
- ```
41
-
42
- Columns: Package, ID, Status, **Trigger** (`SCHEDULER` vs `ON_DEMAND`), Started, Completed, Error.
43
-
44
- - **For one package:**
37
+ - **For one package** (newest first). A materialization is a run of one package's persist sources, so this is the listing; to review a whole environment, read each package in turn (`malloy-pub list package --environment <env>` names them):
45
38
 
46
39
  ```bash
47
40
  malloy-pub list materialization --environment <env> --package <pkg>
48
41
  ```
49
42
 
43
+ Columns: ID, Status, **Trigger** (`SCHEDULER` vs `ON_DEMAND`), Started, Completed, Error.
44
+
50
45
  - **A single run's detail** (the cost signals):
51
46
 
52
47
  ```bash
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-model
3
3
  description: Build Malloy semantic models with base source and joined source files. Use when creating or modifying .malloy files, user asks to "create a malloy model", "add dimensions", "add measures", "create a source", or any Malloy model authoring task.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-model-as-you-go
3
3
  description: After answering a data question, write down what the answer assumed so the next reader can trust the number. A field with a #(doc) in the model when you can edit it, an extend in the notebook when you can only author reports, or a stated assumption plus a Malloy snippet when you can only chat. Use after every answered question that rested on a judgment call, and whenever a question is asked against tables that have no model yet.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
 
7
7
  <!--
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-modeling
3
3
  description: Build semantic models with Malloy for the Malloy Publisher. Read this skill whenever the user asks about modeling data or specifically mentions Malloy.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-notebook-chat
3
3
  description: Steps to follow when the chat is bound to a notebook or saved report. The notebook's cells are the agent's primary context, answer from it, run its queries, and only reach for get_context when the user asks about something outside it.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-notebooks
3
3
  description: Create Malloy notebooks (.malloynb) for interactive dashboards and data stories. Use when user asks to "create a notebook", "make a dashboard notebook", "write a malloynb", "data story", or needs to build reports/visualizations.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-patterns
3
3
  description: Index of Malloy documentation topics. Use to discover what's available in search_malloy_docs. Covers language reference (sources, queries, views, fields, aggregates, joins, filters, expressions, functions), common patterns (YoY, cohorts, percent of total), rendering, and experimental features.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-phrase-detection
3
3
  description: How to construct search targets for the get_context tool. Covers target-type classification and non-obvious decomposition patterns. Read the tool description for field definitions and the end-to-end workflow.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-publish
3
3
  description: Package Malloy models for serving by Malloy Publisher. Use when user asks to "publish", "package", "deploy", or wants to share models with others.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-queries
3
3
  description: Malloy query patterns, syntax rules, and chart annotation reference. Consult before writing or debugging any query. Covers dates, aggregates vs dimensions, join paths, filters, string matching, and common error patterns.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-review
3
3
  description: Malloy semantic-model code review. Invoke when the user asks to review, audit, or critique a `.malloy` file, a folder of Malloy models, or a GitHub PR that touches Malloy. Enforces project modeling standards and emits a navigable review file.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: malloy-scope
3
3
  description: Present discovery findings and propose an analytical scope before modeling. Use after inspecting a package's model and data, to classify tables and recommend an analytical focus the user can pick from.
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  ---
6
6
  <!--
7
7
  Copyright (c) Credible Data Inc.