Monte Carlo Validation Notebook
sickn33/agentic-awesome-skills
Generates SQL validation notebooks for dbt PR changes with before/after comparison queries.
Combine validated Malloy queries into a notebook report. An agent skill from malloydata/publisher.
$ npx skills add malloydata/publisher --skill malloy-analysis-report -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install malloydata/publisher malloy-analysis-report --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/malloydata/publisher.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/malloy-analysis-report .claude/skills/malloy-analysis-report && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "malloy-analysis-report" agent skill from https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-report into .claude/skills/malloy-analysis-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "malloy-analysis-report", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-reportType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add malloydata/publisher --skill malloy-analysis-report -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install malloydata/publisher malloy-analysis-report --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/malloydata/publisher.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/malloy-analysis-report .agents/skills/malloy-analysis-report && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "malloy-analysis-report" agent skill from https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-report into .agents/skills/malloy-analysis-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "malloy-analysis-report", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add malloydata/publisher --skill malloy-analysis-report -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install malloydata/publisher malloy-analysis-report --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/malloydata/publisher.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/malloy-analysis-report .cursor/skills/malloy-analysis-report && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "malloy-analysis-report" agent skill from https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-report into .cursor/skills/malloy-analysis-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "malloy-analysis-report", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/malloydata/publisher.git --path skills/malloy-analysis-report--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add malloydata/publisher --skill malloy-analysis-report -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install malloydata/publisher malloy-analysis-report --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/malloydata/publisher.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/malloy-analysis-report .gemini/skills/malloy-analysis-report && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "malloy-analysis-report" agent skill from https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-report into .gemini/skills/malloy-analysis-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "malloy-analysis-report", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install malloydata/publisher malloy-analysis-reportInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add malloydata/publisher --skill malloy-analysis-report -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/malloydata/publisher.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/malloy-analysis-report .github/skills/malloy-analysis-report && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "malloy-analysis-report" agent skill from https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-report into .github/skills/malloy-analysis-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "malloy-analysis-report", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add malloydata/publisher --skill malloy-analysis-report -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install malloydata/publisher malloy-analysis-report --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/malloydata/publisher.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/malloy-analysis-report .opencode/skills/malloy-analysis-report && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "malloy-analysis-report" agent skill from https://github.com/malloydata/publisher/tree/main/skills/malloy-analysis-report into .opencode/skills/malloy-analysis-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "malloy-analysis-report", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
malloy-analysis-reportCombine validated Malloy queries into a notebook report. An agent skill from malloydata/publisher.
Malloy Analysis Report is an agent skill from malloydata/publisher. Combine validated Malloy queries into a notebook report. Use when the user asks to "create a report", "combine these into a report", or wants a persistent multi-query artifact.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Publisher is the open-source analytics engine for Malloy. It lets you define data models once — and use them everywhere. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit b9a1a19. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are malloy).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Malloy Analysis Report loads about 2.1k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 889 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from malloydata/publisher at commit b9a1a19, republished under its MIT licence (© malloydata). 889 words, ~2,079 tokens.
.claude/skills/malloy-analysis-report/SKILL.md (or your agent's skills folder).<!--
Copyright (c) Credible Data Inc.
SPDX-License-Identifier: MIT
-->
An ad-hoc report is a .malloy notebook, notebooks/<slug>.malloy, that combines markdown narrative with live Malloy queries. An ad-hoc report is written as run: cells, which Publisher still reads and which convert to the one-column tile layout when saved in the Console; when the queries are views on a source, skill:malloy-notebooks describes the layout form (tiles=[…]) to author instead. Load skill:malloy-notebooks for the full format and authoring rules; this skill covers when to build one and how to design good report content (cells, chart annotations, narrative structure). Never write a new .malloynb.
Tool names are written bare here -
get_context,execute_query,search_malloy_docs. The exact prefixed name depends on the host surface; match each against the tools you actually have.
execute_query to verify it works and returns expected results.Do NOT build the notebook in the same turn as execute_query. Explain first, then build.
Do not declare filters in an ad-hoc report. If the source declares given: parameters (or legacy #(filter) annotations), Publisher renders the controls, parses caller parameters, and applies them server-side automatically: the report inherits and displays them with no extra work. If the analysis needs a knob the source doesn't expose, the right move is to add a given: to the source itself, not to wedge a filter widget into the report. #(filter) is deprecated in favour of native Malloy given: parameters. Never add a #(filter) annotation: every use, including required, implicit, and date/number ranges, has a given: form. The malloy-model skill covers this under § Legacy: Parameterizable Filters. For curated notebooks with their own per-notebook filter UI on top of the model, see skill:malloy-notebooks instead.
Do NOT add an H1 heading in any markdown (use H2 and below for sections); the title in the ## artifact tag serves as the title. To redo the structure rather than tweak one cell, rewrite the notebook file end-to-end.
Markdown cells own narrative; query cells own a single Malloy query whose chart annotation tells the renderer how to display the result. Markdown supports H2 headings, lists, bold, and inline code. Keep narrative cells short, one idea per cell, so the rendered output reads as a story instead of a wall of text.
The file starts with ## artifact { kind=notebook title="..." }, then the import for the model file. Definitions (import, source:, query:, given:) come before the first markdown or run:. Prose is ##|(markdown) ... |## for a block (body on the lines between) or ##(markdown) text for one line. Each run: is a query cell, and its tags sit directly above it with nothing between. A #" directly above the run: is its caption. Trailing prose is ##(markdown), never #(markdown) or #".
This is the cell format, the quick form for an ad-hoc report; for a notebook that will be kept and edited, write the layout form in skill:malloy-notebooks (## artifact { kind=notebook tiles=[…] }) instead.
Each run: must be a standalone query (for example run: source -> { ... }). The import is file-wide: query cells never repeat it. Compile the file with /compile ("scope": "file", at the path notebooks/<slug>.malloy) before saving; a .malloy notebook compiles as a model, so its errors come back there. A complete report:
## artifact { kind=notebook title="Sales report" }
import "../order_analysis.malloy"
##|(markdown)
## Overview
What is driving sales, and which categories carry it? The queries below cover every order in the model.
|##
# big_value
run: order_analysis -> {
aggregate:
# label="Revenue"
# currency
total_revenue
# label="Orders"
# number=auto
order_count
}
##(markdown) ## Trend: how does revenue move over time?
#" Revenue by month
# line_chart
run: order_analysis -> {
group_by: order_date.month
aggregate: total_revenue
order_by: 1
}
##|(markdown)
## Breakdown
Which categories account for the most revenue?
|##
#" Top ten categories by revenue
# bar_chart
run: order_analysis -> {
group_by: category
aggregate: total_revenue
order_by: total_revenue desc
limit: 10
}
##(markdown) ## Key takeaways: what to look at next.A well-structured report typically follows this pattern:
[Markdown] ## Overview: what question are we answering, what data is in scope (date range, entity count)
[Malloy] KPI cell: headline numbers (e.g., # big_value, or # dashboard with nested # big_value cells)
[Markdown] ## Trend: describe what we should look for over time
[Malloy] Time-series cell (e.g., # line_chart on a date dimension)
[Markdown] ## Breakdown: where the signal is
[Malloy] Categorical cell (e.g., # bar_chart on a categorical dimension)
[Markdown] ## Key takeaways: what the user should walk away withUse this as a default; deviate when the analysis warrants. A grounded report names the time range and entity count up front so every number that follows has context.
Read skill:malloy-charts before picking visualizations: it owns chart-type selection, properties, and the placement rules for chart annotations. skill:malloy-queries covers Malloy query patterns and the critical placement rules for chart-annotation tags.
When in doubt:
# big_value, often nested inside # dashboard.# line_chart, usually on the primary date dimension.# bar_chart, ordered by the metric.# table.size=fill.# dashboard with nest: blocks.Annotations go before run:, never inside curly braces:
# bar_chart
run: source -> {
group_by: category
aggregate: revenue
order_by: revenue desc
limit: 10
}A # dashboard cell composes nested views, useful for KPIs alongside a trend in a single cell. Each nest: is a tile; any top-level aggregate: measures render as KPI cards. For a fixed grid, use # dashboard { columns=N } with # colspan on each tile (see skill:malloy-charts):
# dashboard { columns=2 }
run: source -> {
nest:
# colspan=2
# big_value
kpis is {
aggregate:
# label="Revenue"
# currency
total_revenue
# label="Orders"
# number=auto
order_count
}
nest:
# line_chart
trend is {
group_by: order_date.month
aggregate: total_revenue
order_by: 1
}
}Key rendering rules to keep in mind when shaping a cell:
group_by = x-axis, FIRST aggregate = y-axis.# x, # y, # series on individual fields.# y above the aggregate: keyword.# dashboard with nested views for multiple charts.# table.size=fill for standalone table queries.For small targeted changes (fix one cell, insert one new cell), edit the cell's statement or markdown in place rather than recreating the whole notebook. For structural rewrites (reordering many cells, changing the narrative arc), rewrite the notebook file. An existing .malloynb is read, not edited: to change its story, write a .malloy notebook.
You CANNOT see the rendered output of notebook cells. Do not claim to see charts, values, or patterns from report cells you haven't explicitly executed via execute_query. If you need to analyze results, run the query via execute_query first.
© malloydata, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/malloy-analysis-report of malloydata/publisher.
Open the folder on GitHubat commit b9a1a19
Malloy Analysis Report next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Malloy Analysis Report this skillmalloydata/publisher | 116 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Monte Carlo Validation Notebooksickn33/agentic-awesome-skills | 47k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| ClickHouse Query Performance Validationcomet-ml/opik | 22k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Sqlx Query Validatormacro-inc/macro | 4.6k | — | ~1.1k | Automated safety check: Notes | AGPL-3.0 | |
| Jupyter Notebookmicrosoft/ai-agents-for-beginners | 77k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Jupyter Notebookmicrosoft/ai-agents-for-beginners | 77k | — | ~1.2k | Automated safety check: Warn | MIT |
sickn33/agentic-awesome-skills
Generates SQL validation notebooks for dbt PR changes with before/after comparison queries.
comet-ml/opik
Measures what a ClickHouse query change actually costs, turning a suspicion that a query is slow into numbers a reviewer can act on before it merges.
macro-inc/macro
Inspect Rust changes for SQLx queries. An agent skill from macro-inc/macro.
microsoft/ai-agents-for-beginners
ใช้เมื่อผู้ใช้ร้องขอให้สร้าง จัดโครงร่าง หรือแก้ไข Jupyter notebooks (.ipynb) สำหรับการทดลอง การสำรวจ หรือบทแนะนำ; ควรใช้เทมเพลตที่มาพร้อมและรันสคริปต์ช่วยเหลือ newnotebook.py…
microsoft/ai-agents-for-beginners
ប្រើនៅពេលដែលអ្នកប្រើស្នើឲ្យបង្កើត រៀបចំ (scaffold) ឬកែសម្រួល Jupyter notebooks (.ipynb) សម្រាប់សាកល្បង ស្វែងរក ឬមេរៀន; អនុសាសន៍ឲ្យប្រើទំរង់គំរូដែលភ្ជាប់មកជាមួយ និងរត់ស្គ្រីបជំនួយ newnotebook.py…
microsoft/ai-agents-for-beginners
အသုံးပြုပါသည်။ အသုံးပြုသူက စမ်းသပ်မှုများ၊ ရှာဖွေမှုများ သို့မဟုတ် သင်ခန်းစာများအတွက် Jupyter notebook (.ipynb) များကို ဖန်တီးရန်၊ အခြေခံဖွဲ့စည်းရန် သို့မဟုတ် တည်းဖြတ်ရန် တောင်းဆိုသောအခါ အသုံးပြုပါ။…
malloydata/publisher
Score one analytical answer against a verified golden, and score which of the entities the golden depends on retrieval delivered to the answerer.
malloydata/publisher
Fix a CRITICAL Trivy finding that is failing CI in this repo (a vulnerability, misconfiguration, or secret from security-scan.yml or image-scan.yml), or add, review, or retire an entry in…
malloydata/publisher
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.
malloydata/publisher
Conduct a local Publisher evaluation loop in five steps: scrape/run, eval, diagnose, improve, checkpoint.
malloydata/publisher
Make the smallest safe Malloy model edit that closes a diagnosed model-owned gap, with a probe receipt for every factual claim.
malloydata/publisher
Decide whether ONE answer matches its golden, and say whether you believe the golden.
Combine validated Malloy queries into a notebook report. An agent skill from malloydata/publisher. Malloy Analysis Report is an agent skill from malloydata/publisher. Combine validated Malloy queries into a notebook report.
Malloy Analysis Report fits situations like: the user asks to create a report; combine these into a report; wants a persistent multi-query artifact.
Run `npx skills add malloydata/publisher --skill malloy-analysis-report -a claude-code`. Or copy the skill folder (skills/malloy-analysis-report in malloydata/publisher) into .claude/skills/malloy-analysis-report in your project. Claude Code loads it when a task matches its description.
Run `npx skills add malloydata/publisher --skill malloy-analysis-report -a codex`. Or copy the skill folder (skills/malloy-analysis-report in malloydata/publisher) into .agents/skills/malloy-analysis-report in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add malloydata/publisher --skill malloy-analysis-report -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/malloy-analysis-report, .gemini/skills/malloy-analysis-report, .github/skills/malloy-analysis-report and .opencode/skills/malloy-analysis-report in your project.
SKILL.md names no scripts, command-line tools or credentials: Malloy Analysis Report is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Malloy Analysis Report is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Malloy Analysis Report: Monte Carlo Validation Notebook (sickn33/agentic-awesome-skills, 47k stars), ClickHouse Query Performance Validation (comet-ml/opik, 22k stars), Sqlx Query Validator (macro-inc/macro, 4.6k stars) and Jupyter Notebook (microsoft/ai-agents-for-beginners, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
malloydata (a GitHub organization) maintains it in malloydata/publisher, which has 116 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 9, 2026.
Source: malloydata/publisher on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.