Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add malloydata/publisher --skill malloy-powerbi-reviewgit clone --depth 1 https://github.com/malloydata/publisherWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/malloydata/publisher/malloy-powerbi-review)<a href="https://agentmods.dev/skills/malloydata/publisher/malloy-powerbi-review"><img src="https://agentmods.dev/badge/skills/malloydata/publisher/malloy-powerbi-review/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/malloydata/publisher/malloy-powerbi-review"><img src="https://agentmods.dev/badge/skills/malloydata/publisher/malloy-powerbi-review.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00145 | $0.03764 |
| Opus 5.5 | $0.00058 | $0.01506 |
| Sonnet 5.5 | $0.00029 | $0.00753 |
| Haiku 4.5 | $0.00015 | $0.00376 |
Grade A, and why
malloy-powerbi-review scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 16d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 163 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Power BI to Malloy
Purpose: Move a working Power BI semantic model onto Malloy, fast, and prove the numbers match. The user already has a model that their business agreed on; the job is to carry it across without silently changing what it means.
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.
This is NOT a blind conversion. DAX and Malloy disagree about what a filter means. A measure that translates cleanly on sight can still return a different number, with no error raised. Knowing which measures change meaning on the way across is the work - and then saying what the port costs, because "untranslatable" has done nothing for the customer.
The migration, end to end
- Get the model in text. Ask for TMDL or PBIP before accepting a
.pbix(see below).reference/discover.mdinventories it. (Workflow Step 1, DISCOVER.) - Carry across what the business already agreed on - tables, relationships, names, descriptions, visibility.
reference/propose-fields.md. (Step 4, DEFINE.) - Route every measure, then transpile it from a recipe.
reference/translate-measures.mddecides where each one goes; the threecookbook-*.mdfiles have the worked Malloy. A routing table is not a migration - the recipe is the deliverable. (Step 5, BUILD.) - Prove the numbers. Parity at more than one filter context, below. This is what makes the switch safe to recommend rather than merely done. (Steps 5 and 7.)
- Say what changed. Every divergent measure, every stopgap and its cost, every RLS role that came across weaker.
reference/review-coverage.mdchecks nothing was dropped;rls-roles.mdanddocument.mdfinish the job. (Steps 7 to 9.)
Step N here and in the reference files is the numbering of the shared modeling workflow (malloy-modeling); the five items above are where this migration's stages land in it.
What ships with it
15 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- NOTICE 1.0 KB
- reference/_concepts.md 15 KB
- reference/cookbook-filter-context.md 15 KB
- reference/cookbook-structure.md 13 KB
- reference/cookbook-time.md 17 KB
- reference/corpus.md 9.8 KB
- reference/discover.md 12 KB
- reference/document.md 2.3 KB
- reference/limitations.md 8.6 KB
- reference/propose-fields.md 3.9 KB
- reference/review-coverage.md 3.5 KB
- reference/rls-roles.md 11 KB
- reference/translate-measures.md 17 KB
- scripts/classify_measures_test.py 66 KB runs code
- scripts/classify_measures.py 66 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 16d ago First seen · 163 lines · 145 tokens per session scan A b5c7fe310f1e
malloy-powerbi-review is a skill published in the GitHub repository malloydata/publisher (118 stars, last pushed today), licensed MIT. It adds 145 tokens to every session and 3,764 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-30.
Other skills, from other repositories
mcp-artifact-integration
Integrate Lightdash MCP query results into Claude-created HTML or React artifacts. Covers host bridges, response envelopes, polling, errors, CSV fallback and chart data. Not needed for ordinary chat or Lightdash's built-in chart app.
effective-dbt-sql
Use when writing or modifying dbt model SQL — deciding whether to add a subquery or reuse an existing dimension/metric, structuring a query, joining models, or refactoring a metric's SQL. Encodes SQL semantic-correctness rules: reuse existing fields, prefer CTEs over correlated subqueries, and make joins and column…
alibabacloud-data-agent-mcp-skill
Alibaba Cloud Data Agent MCP skill (alibabacloud-data-agent-mcp-skill, data-agent MCP) for enterprise database/file analysis. Use when the user asks (in any language, including Chinese) to query/analyze DMS-managed databases, run SQL/data analysis, start quick-query (lite) or deep-analysis (pro/ultra) sessions…
wren-usage
Wren Engine — semantic SQL engine for AI agents. Query 22+ data sources (PostgreSQL, BigQuery, Snowflake, MySQL, ClickHouse, etc.) through a modeling layer (MDL). This skill is the main entry point: it guides setup, delegates to focused sub-skills for SQL authoring, MDL generation, project management, and MCP server…
wren-onboarding
Onboard a user to Wren Engine end-to-end. Walks through environment checks, project scaffolding, connection configuration via .env, and first query. Use when: user wants to install Wren Engine, set up a new data source connection, or bootstrap a new project from scratch. Triggers: '/wren-onboarding', 'install wren'…
arrowspace
Spectral vector search using graph Laplacian eigenstructure. Use when cosine/L2 similarity misses latent structure in your embeddings.