Borrowing it
Nothing to install: this file belongs to Osc2405/pbi-context. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Osc2405/pbi-context/main/.claude/skills/analyze-pbi-model/SKILL.mdgit clone --depth 1 https://github.com/Osc2405/pbi-contextWrote 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/osc2405/pbi-context/analyze-pbi-model)<a href="https://agentmods.dev/skills/osc2405/pbi-context/analyze-pbi-model"><img src="https://agentmods.dev/badge/skills/osc2405/pbi-context/analyze-pbi-model/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/osc2405/pbi-context/analyze-pbi-model"><img src="https://agentmods.dev/badge/skills/osc2405/pbi-context/analyze-pbi-model.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.00097 | $0.01116 |
| Opus 5.5 | $0.00039 | $0.00446 |
| Sonnet 5.5 | $0.00019 | $0.00223 |
| Haiku 4.5 | $0.00010 | $0.00112 |
Grade A, and why
analyze-pbi-model 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 2mo 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 — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Analyze a Power BI model
Target model: $ARGUMENTS
If no path was given, ask the user for the .pbit file, .pbip file, .SemanticModel/ folder,
or project root folder before doing anything else.
Step 1 — Extract
Run the extractor once to generate the model's indexed output:
pbi-context -i "$ARGUMENTS" -o output
If pbi-context is not on PATH (not installed as a package), run it as a module from this skill's
repo root instead — cli.py uses relative imports, so it must run with -m, not as a bare script:
python -m pbi_extractor.cli -i "$ARGUMENTS" -o output
run with working directory ${CLAUDE_PROJECT_DIR} (this skill's repo root), regardless of where
$ARGUMENTS itself points on disk.
Add --lang es for Spanish documentation, or --index-format toon when the model is large and
every token spent loading table/column/relationship listings matters.
The output lands in output/<model-name>/, where <model-name> is the input file's stem (for
.pbit) or the .SemanticModel folder's name without the suffix (for .pbip).
Step 2 — Query, never load whole files speculatively
Use pbi-context --query output/<model-name> ... (or python -m pbi_extractor.cli --query ... with
the same fallback rule as Step 1) instead of reading tables/<Name>.json or relationships.json
directly — the resolver already handles TOON decoding for you, so you never need to think about
{__toon, __fields, __rows} at all, regardless of which --index-format was used.
- Always start with
output/<model-name>/index.json(read the file directly, it's tiny). It has, per table: name, hidden/technical flags, column count, measure count, categories present. For "what's in this model" / "how many tables" questions,index.jsonalone is usually enough. - For a specific table's columns/measures/DAX, run
pbi-context --query output/<model-name> --table "TableName"— returns one JSON object with a unifiedmeasureslist (name, category, complexity, format_string, display_folder, formatted_expression). Add nothing else; don't read the rawtables/*.jsonfile yourself. - For one specific measure once you already know the table and measure name, run
pbi-context --query output/<model-name> --table "TableName" --measure "MeasureName"— cheaper than loading the whole table. - For "which tables have X measures/columns" / "find the measure/column that does Y" questions
(something
index.jsonalone can't answer — it would otherwise require opening every table file by hand), runpbi-context --query output/<model-name> --search-measures "keyword"or--search-columns "keyword"(optionally--category revenueetc.). - For relationship/join questions, run
pbi-context --query output/<model-name> --relationships [--table "TableName"]. - For a full human-readable narrative doc (the user wants something to paste elsewhere, not
an answer to a specific question), read
output/<model-name>/model_documentation.mddirectly. metadata.jsonis the complete, unfiltered dump (every table, every column, every DAX expression). Only read it directly if the question genuinely spans the whole model andindex.json+ a couple of--querycalls aren't enough — it's the heaviest file in the output.
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.
- 2mo ago First seen · 78 lines · 97 tokens per session scan A 56c99bfc15de
analyze-pbi-model is a skill published in the GitHub repository Osc2405/pbi-context (15 stars, last pushed 3mo ago), licensed MIT. It adds 97 tokens to every session and 1,116 once invoked, about $0.0004 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-08-30.
analyze-pbi-model compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| analyze-pbi-modelOsc2405/pbi-context | Skill | 15 | 3mo ago | MIT | A | 97 | Claude Code |
| gentech-blockrunBlockRunAI/blockrun-mcp | Skill | 389 | yesterday | MIT | A | 46 | Claude Code, Codex |
| portainer-mcp-hygieneportainer/portainer-mcp | Skill | 241 | 15d ago | MIT | A | 315 | Claude Code, Codex |
| hmem-releaseBumblebiber/hmem | Skill | 24 | 6d ago | MIT | A | 50 | Claude Code |
| disease-analysisdbcls/togomcp | Skill | 21 | 2d ago | MIT | A | 149 | Claude Code, Codex |
| research-article-analysisdbcls/togomcp | Skill | 21 | 2d ago | MIT | A | 147 | Claude Code, Codex |
| index-advisorDeepSQLAI/deepsql | Skill | 40 | 5d ago | Apache-2.0 | A | 32 | Claude Code, Codex |