plugins/powerbi-master/skills/programmatic-development/SKILL.md
Programmatic Power BI development with PBIR, PBIP, TMDL, TOM, and fabric-cicd. PROACTIVELY activate for: (1) creating Power BI reports programmatically (PBIR enhanced report format), (2) PBIR vs PBIR-Legacy selection (2026 default), (3) PBIP developer mode and Power BI project files, (4) Tabular Object Model (TOM) / .NET SDK scripting, (5) Tabular Editor scripting (C# scripts, advanced scripting), (6) pbi-tools workflows, (7) fabric-cicd Python deployments (FabricWorkspace, publish_all_items), (8) Fabric CLI (fab deploy), (9) Semantic Link / sempy / semantic-link-labs, (10) generating PBIX programmatically, (11) parameter.yml for environment-specific deployments, (12) ALM Toolkit. Provides: PBIR/PBIP project templates, fabric-cicd deploy.py, Tabular Editor scripting recipes, parameter.yml patterns, and end-to-end programmatic workflows.
npx skillsauth add JosiahSiegel/claude-plugin-marketplace programmatic-developmentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Power BI supports multiple approaches for creating and managing reports and semantic models through code. As of 2026, the canonical stack is:
tmdl-mastery skill)fab deploy for deploymentDetailed material lives in references/. Load only what the current task needs.
| Topic | File | When to load |
|-------|------|--------------|
| PBIR rollout timeline, full PBIP folder structure, byPath/byConnection, annotations, validation, limitations | references/pbir-format-deep-dive.md | Authoring PBIR by hand, debugging definition.pbir, validating generated PBIR, understanding 2026 rollout state |
| PBIR JSON schema (visuals, pages, report settings) with Python manipulation examples | references/pbir-schema-reference.md | Scripting PBIR with Python: add page, batch-update visuals, copy between reports |
| TOM/Tabular Editor/fabric-cicd/Fabric CLI/semantic-link/pbi-tools/ALM Toolkit -- setup, examples, Desktop developer features | references/tools-and-tabular-editor.md | Choosing a tool, deploying, scripting TOM, running C# scripts, configuring Desktop |
| TOM advanced patterns (RLS, OLS, partitions, perspectives, translations, calc groups, SP auth) | references/tom-advanced-patterns.md | Writing complex TOM .NET code beyond basic measure/table edits |
| fabric-cicd advanced recipes (multi-workspace, hooks, GitHub Actions/Azure DevOps pipelines, parameter patterns, troubleshooting) | references/fabric-cicd-recipes.md | Production CI/CD workflows, multi-environment promotion, OIDC federated credentials |
PBIR is Microsoft's modern, publicly documented, folder-based, JSON report format. It replaces the opaque report.json blob (now called PBIR-Legacy) with one file per visual, page, and bookmark, enabling proper Git diff/merge, code review, and schema-validated editing in VS Code.
Current state (April 2026): PBIR is the default for newly created reports in the Service. Existing Service reports are being auto-upgraded gradually. Desktop still needs the preview toggle until the May 2026 release, when PBIR becomes the Desktop default. PBIR-Legacy will be deprecated at PBIP GA.
For the full 2026 rollout timeline, admin opt-out, Service/Desktop restore policies, Sovereign Cloud caveats, complete project structure, byPath vs byConnection examples, annotations, self-validation procedure, and limitations, see references/pbir-format-deep-dive.md.
Quick PBIP structure (essentials only):
MyProject.pbip # Entry JSON
├── MyProject.Report/
│ ├── definition.pbir # Required entry; uses byPath or byConnection
│ └── definition/ # PBIR folder (one file per page/visual/bookmark)
└── MyProject.SemanticModel/
├── definition.pbism
└── definition/ # TMDL folder
TMDL is the human-readable, source-control-friendly format for semantic model definitions. GA since 2025. For comprehensive TMDL coverage including complete syntax reference, all object types, CI/CD patterns, and deployment workflows, load the dedicated powerbi-master:tmdl-mastery skill.
Quick example:
table Sales
measure 'Total Sales' = SUM(Sales[Amount])
formatString: $ #,##0.00
displayFolder: Revenue
partition 'Sales-Partition' = m
mode: import
source =
let
Source = Sql.Database("server", "db"),
Sales = Source{[Schema="dbo",Item="Sales"]}[Data]
in
Sales
column Amount
dataType: decimal
sourceColumn: Amount
formatString: $ #,##0.00
powerbi-master:validation-testing skill.parameter.yml for environment-specific GUIDs/connection strings.fabric-cicd (Python library, primary) or fab deploy (CLI wrapper). Both consume the same parameter.yml. First deploy requires manual data-source credential entry in the Fabric portal.| Scenario | Recommended Tool |
|----------|------------------|
| PBIP project with CI/CD (GitHub Actions / Azure DevOps) | fabric-cicd (Python) |
| Local ad-hoc deploy of a PBIP | fab deploy (Fabric CLI v1.5+) |
| Fabric notebook-based model editing | semantic-link-labs (sempy_labs) |
| Pure semantic model via XMLA | TOM (.NET) via Microsoft.AnalysisServices.NetCore.retail.amd64 |
| TMDL folder -> XMLA | Tabular Editor 2 CLI (-D switch) |
| Legacy PBIX only (no PBIP) | pbi-tools |
| Cross-environment promotion (dev/test/prod) | Fabric Deployment Pipelines (GUI) OR fabric-cicd with parameter.yml |
| Schema diff between two models | ALM Toolkit |
| Need | Load reference | Tool |
|------|---------------|------|
| Modify a measure on a deployed model | tools-and-tabular-editor.md | TOM or semantic-link-labs |
| Auto-generate measures across folders | tools-and-tabular-editor.md | Tabular Editor C# script |
| Deploy PBIP from CI | fabric-cicd-recipes.md | fabric-cicd + parameter.yml |
| Generate PBIR pages from a template | pbir-schema-reference.md | Python + JSON schema validation |
| RLS/OLS in .NET | tom-advanced-patterns.md | TOM |
| Extract legacy PBIX for diff | tools-and-tabular-editor.md | pbi-tools |
powerbi-master:tmdl-mastery -- Deep TMDL language reference and syntaxpowerbi-master:validation-testing -- Validate generated PBIR / TMDL / DAX before deploypowerbi-master:rest-api-automation -- Raw Fabric REST API endpoints when fabric-cicd doesn't cover a scenariopowerbi-master:deployment-admin -- Fabric Deployment Pipelines, workspace management, RLS at deploy timepowerbi-master:fabric-integration -- Direct Lake, OneLake, Lakehouse/Warehouse integrationdevelopment
Use for Clerk sessions, tokens, webhooks, orgs, and security. PROACTIVELY activate for session tokens, JWT templates, getToken(), custom claims, pending sessions, multi-session UX, organizations, roles, permissions, system vs custom permissions, features/plans, MFA/passkeys/password policy/bot protection, Clerk webhooks, Svix signatures, verifyWebhook(), user/org sync, retries/replays, environment variables, custom domains, secret rotation, logs, and auth security reviews. Provides token semantics, webhook idempotency, authorization defaults, and hardening checklist.
tools
Use for Clerk in Next.js. PROACTIVELY activate for @clerk/nextjs setup, App Router auth()/currentUser(), clerkMiddleware(), proxy.ts/middleware.ts, createRouteMatcher(), protected pages/layouts/Route Handlers/Server Actions/API routes/tRPC, auth.protect() role/permission/token checks, ClerkProvider placement, server-only clerkClient, Link prefetch, redirects, 401/404 auth failures, custom domains, __clerk proxy paths, and deployment gotchas. Provides file patterns, server/client boundary rules, matcher templates, and production checks.
development
Use for Clerk frontend auth flows. PROACTIVELY activate for React, JavaScript, Vue, Nuxt, Astro, Expo, React Router, TanStack React Start, or SPA setup; ClerkProvider and publishable-key wiring; SignIn/SignUp/UserButton/UserProfile/OrganizationSwitcher; custom useUser/useAuth/useClerk/useSignIn/useSignUp/useSession/useOrganization flows; multi-session UX; cross-origin getToken() fetches; loading states, redirects, routing, CORS/cookies, or hydration bugs. Provides SDK selection, UI patterns, token-fetch templates, and frontend gotchas.
development
Use for Clerk dev/prod readiness, deployment, and multi-language implementation planning. PROACTIVELY activate for environment variables, pk_test/sk_test vs pk_live/sk_live, local dev, preview/staging/prod instances, domains/DNS, redirects, OAuth credentials, custom domains/proxy, authorizedParties, CSP, CORS/cookies, webhooks/tunnels, Vercel/Netlify/Cloudflare/API gateways, monitoring/troubleshooting, and backends in Node/Express/Fastify, Python/FastAPI/Django/Flask, Go, Ruby/Rails, Java/Spring, .NET, PHP/Laravel. Provides checklists, rollout plans, and language-portable patterns.