skills/azure-cost-management-app/SKILL.md
Install and connect the Azure Cost Management App (by Microsoft Corporation) in Power BI Service via browser automation. Use this skill whenever the user mentions installing, deploying, connecting, or configuring the Azure Cost Management template app in Power BI, or when they want to connect Power BI to their EA (Enterprise Agreement) enrollment for cost visibility. Also triggers when the user says "connect your data" on the Cost Management App, wants to set up EA cost data in Power BI, or needs to link an enrollment number to a Power BI cost report.
npx skillsauth add julianobarbosa/claude-code-skills azure-cost-management-appInstall 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.
End-to-end browser automation for deploying and connecting the Microsoft Azure Cost Management App in Power BI Service, targeting a specific workspace and EA enrollment.
Template app workspace behavior:
Power BI template apps (like this one) always create their own auto-named workspace — you cannot
install them directly into an arbitrary existing workspace like devops-team. What "deploying to
a workspace" actually means in practice is one of:
AzureCostManagementApp workspace to real EA data (most common)EA connector authentication: The Azure Cost Management connector for EA enrollments requires Enterprise Administrator (read-only) role at the billing account level. Standard Azure RBAC roles (Cost Management Reader, Billing Reader) do NOT work and will produce auth errors.
App source: Always install from Microsoft Corporation (not community copies). In the AppSource gallery, the Microsoft-published app appears further down — scroll past user-shared copies that show internal user names as publisher.
Before installing a new copy, check the Apps list:
https://app.powerbi.com/groups/me/appsKey question to ask: "There's already an installation showing sample data. Would you like to connect that one to your EA data, or install a fresh copy?"
Install dialog options:
Choose based on user intent. For connecting to EA data on an existing install, go to Step 3 directly.
Navigate to the installed app report (left sidebar → AzureCostManagementApp workspace icon, or
via the Apps list). The "Getting Started" page shows a banner: "You're viewing this app with
sample data. Connect your data".
Click Connect your data and fill in the Parameters dialog:
| Field | Value | Notes |
|-------|-------|-------|
| BillingProfileIdOrEnrollmentNumber | <enrollment number> | e.g. 53329720 |
| NumberOfMonths | <integer> | e.g. 12 for 12 months of history |
| Scope | Enrollment Number | Literal text — this is the scope type identifier |
Click Next.
Step 1 of 2 — Blob storage endpoint (Anonymous):
https://ccmstorageprod.blob.core.windows.net/...AnonymousNoneStep 2 of 2 — EA Cost Management connector (OAuth2):
AzureCostManagementEnrollment Number;<enrollment-number> (auto-populated)OAuth2OrganizationalImportant: The OAuth2 popup opens as a separate browser window outside the automation session. The user must complete the EA Enterprise Administrator sign-in manually in that popup. After they confirm, tell them to come back and say "done" so you can verify the connection.
After auth completes, navigate to the workspace content list:
https://app.powerbi.com/groups/<workspace-group-id>/list
Success indicators:
Azure Cost Management App <timestamp>The first refresh runs automatically after auth. It may take several minutes. The app will show real EA data once the first refresh completes.
Before starting, collect these if not already provided:
| Parameter | Description | Example |
|-----------|-------------|---------|
| EA Enrollment Number | The billing account enrollment number | 53329720 |
| Number of months | How many months of cost history to load | 12 |
| Target workspace | Where they want the app to live | devops-team (note: template apps create their own workspace) |
Use mcp__claude-in-chrome__* browser automation tools throughout:
tabs_context_mcp — always call first to get existing tab IDsnavigate — go to Power BI URLscomputer (screenshot, left_click, type, wait, scroll, zoom) — interact with the UIbrowser_batch — batch independent sequential actions for speedfind — locate form elements by natural language descriptionform_input — set dropdown values by refUse the already-authenticated tab (app.powerbi.com) rather than creating a new tab, since
new tabs will redirect to the Microsoft login page.
"Sign in and connect" does nothing / stays on step 2: The OAuth2 popup may have opened in a separate window behind Power BI. Ask the user to check for a Microsoft sign-in popup and complete the EA admin login there.
Privacy level dropdown is blank:
Set it to Organizational before clicking "Sign in and connect". An empty privacy level can
cause the connection to hang.
Refresh fails after auth: The EA connector requires Enterprise Administrator (read-only). If the signed-in account doesn't have that role, the refresh will fail. Check the semantic model settings → Refresh history for the error details.
App still shows sample data after auth: This is normal — the first refresh takes several minutes. Navigate to the workspace list and check if "Refresh is in progress" appears in the banner.
Multiple Azure Cost Management App entries in Apps list: These may be copies installed by different users. Check the Owner column. The one owned by the current user is the one we can configure. Ask the user which one to connect.
development
End-to-end branch delivery: commit (no AI attribution) → push → open a pull request → ensure a Board work item exists (create one per task, assigned to the configured user, if none) and link it → after merge, clean up branch and worktree. Auto-detects the platform from the remote — Azure Repos + Boards (azure-devops-node-api SDK; OAuth Bearer push fallback via `az`) or GitHub (Octokit; `gh` for auth). Scripts are TypeScript, run via `bun`. Use whenever asked to "ship", "ship it", "ship this branch", "open a PR", "push and open a PR", "raise a PR", "deliver this", "send this for review", or "create a PR and link the work item" — and when a direct push to main is blocked and the change needs to go through a PR instead.
testing
Brief description of what this skill does. Include specific triggers - when should Claude use this skill? Example triggers, file types, or keywords that indicate this skill applies.
tools
Manage and troubleshoot PATH configuration in zsh. Use when adding tools to PATH (bun, nvm, Python venv, cargo, go), diagnosing "command not found" errors, validating PATH entries, or organizing shell configuration in .zshrc and .zshrc.local files.
tools
Zabbix monitoring system automation via API and Python. Use when: (1) Managing hosts, templates, items, triggers, or host groups, (2) Automating monitoring configuration, (3) Sending data via Zabbix trapper/sender, (4) Querying historical data or events, (5) Bulk operations on Zabbix objects, (6) Maintenance window management, (7) User/permission management