Portfolio-level agency dashboard aggregating health metrics across all client brands — campaign status, budget pacing, KPI attainment, team utilization.
SkillScore68Maintained
Automatic
◆Marketing & Content pack
Last verified 8/17/2026
What it changes
Passed 13 of 19 test cases with the skill, and 9 of 19 without it.
Without skill45%
With skill68%
Checks it passed that the model alone missed
Invokes script team-manager.py with action check-capacity
Runs script campaign-tracker.py with action list-campaigns
Executes script execution-tracker.py with action get-history
and 2 more in the full report
5 fixed10 passed either way7 still failing0 broke
Pass-rate lift
+23 pp
Tokens
+80%
Agent turns
0%
Response time
-23%
Model gemini-3.6-flashMeasured 8/17/2026v1 · latest is v215 of 22 cases passed with skill · 19 comparable
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
See it in action
One of 5 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 5
Prompt
To aggregate campaign budgets and active statuses for account `omni-mart`, what CLI command line invocation must be run against the campaign tracker utility?
What was checked, without and with the skill
Checked
Without skill
With skill
Runs script campaign-tracker.py with action list-campaigns
Missed
Passed
case-15 · gemini-3.6-flash · 8/17/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md62 linessingle file
/digital-marketing-pro:agency-dashboard
Script location. If your host does not set ${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin's scripts/ folder, next to skills/. Run them with Python 3.10 or newer: python, or python3 where python is not found (macOS, many Linux systems).
Purpose
Generate a portfolio-level dashboard aggregating health metrics across ALL client brands. Shows campaign activity, budget pacing, KPI attainment, content pipeline, and team utilization at a glance — giving agency leadership a single view of operational health without opening each account individually. Designed for daily standups, weekly agency reviews, or on-demand health checks.
Input Required
The user must provide (or will be prompted for):
Dashboard scope: All brands or a specific list of brand slugs to include in the portfolio view
Time period: Current week, month, or quarter — determines the pacing calculations and comparison windows
Detail level: Summary (top-line health scores per client) or detailed (campaign-level breakdowns per client with individual campaign metrics)
Sort/filter preferences: Sort clients by health score, spend, revenue, or alphabetical — and optionally filter to only at-risk (amber/red) accounts
Team filter (optional): Filter by account lead or team pod if the agency has multiple pods managing different client sets
Comparison baseline (optional): Compare current period against prior period, same period last year, or plan/target — defaults to prior period
Alert threshold overrides (optional): Custom thresholds for performance drop alerts or budget pacing tolerance — defaults to 20% performance drop and 10% pacing variance
Export format (optional): Whether to output as markdown, Google Sheets, or Slack message — defaults to markdown
Process
Load brand context: Read ~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json. Apply brand voice, compliance rules for target markets (skills/context-engine/compliance-rules.md), and industry context. Also check for guidelines at ~/.claude-marketing/brands/{slug}/guidelines/_manifest.json — if present, load restrictions. Check for agency SOPs at ~/.claude-marketing/sops/. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults.
Enumerate all brands: Scan ~/.claude-marketing/brands/ for all configured brand directories (excluding _active-brand.json). For each brand, load profile.json to get client name, industry, engagement type, contract dates, assigned team members, and KPI targets
Pull campaign data per brand: For each brand in scope, run python "${CLAUDE_PLUGIN_ROOT}/scripts/campaign-tracker.py" --brand {slug} --action list-campaigns to retrieve active campaigns, statuses, budgets, and objectives (use --action get-campaign --id {id} for a single campaign's detail)
Pull execution status per brand: For each brand, run python "${CLAUDE_PLUGIN_ROOT}/scripts/execution-tracker.py" --brand {slug} --action get-history to get logged executions — completed deliverables, launches, and tasks — then derive pending / overdue status in analysis
Check budget pacing per brand: For each brand, compare actual spend-to-date against planned spend for the current period — calculate pacing percentage and project end-of-period spend at current run rate
Calculate per-client health score: Apply the RAG scoring formula from skills/context-engine/agency-operations-guide.md:
Green: On track across KPIs, budget on pace (within 10%), no overdue items, content pipeline flowing
Amber: 1-2 KPIs at risk, minor pacing drift (10-20%), items approaching deadline, or pending approvals aging
Aggregate portfolio KPIs: Sum total active campaigns, total monthly spend, average ROAS across clients, total leads/conversions, total pending deliverables, and overall portfolio health distribution (count and percentage of green/amber/red)
Check team utilization: Run python "${CLAUDE_PLUGIN_ROOT}/scripts/team-manager.py" --action check-capacity --brand {slug} to assess current team workload — available capacity per team member, overloaded staff flagged, accounts at risk of under-service, and billable-hours tracking. Optionally add a Claude Code cost line — only if the user supplies the data. The plugin cannot read Claude Code usage itself. If the user pastes the output of their own /usage command (a Claude Code CLI slash command they run interactively), aggregate the per-model token/cost figures it reports into a "Claude Code consumption" line so leadership can see AI cost before the monthly invoice. Label models by whatever the user's /usage output names — do not assume specific model IDs. Brand-per-directory workspaces (~/work/clients/{slug}) make the figures brand-attributable.
Identify pending approvals: Scan execution logs across all brands for items awaiting client or internal approval — flag anything older than 48 hours as overdue, group by brand and urgency tier (routine, time-sensitive, blocking)
Surface upcoming deadlines: Compile deadlines from all brands for the next 7 and 14 days — campaign launches, content due dates, reporting deadlines, contract milestones, renewal dates, and QBR schedules
Detect alerts and anomalies: Flag any brand with sudden performance drops (>20% week-over-week on primary KPI), budget pacing issues (>10% ahead or behind plan), stalled campaigns (no activity in 5+ days), MCP connection failures, or expiring credentials
Check content pipeline: Aggregate content status across all brands — items in draft, in review, approved, scheduled, and published — identify bottlenecks where content is stalling at a particular stage
Generate trend comparison: Compare current portfolio health against the selected baseline period — show improving, stable, or declining trajectory for each client and the portfolio overall with directional arrows
Compile portfolio dashboard: Assemble all data into a structured dashboard sorted by the user's preference, with drill-down detail available for any individual client