AgentStack
SKILL verified MIT Self-run

Pbi Project Hub

skill-gusbavia-pbi-project-hub-pbi-project-hub · by gusbavia

Build a complete Power BI project delivery vault in Obsidian — from client discovery to production sign-off. Asks 8 questions about your practice and first project, then generates folder structure, design system, technical reference, DAX/HTML guide, discovery framework, sprint board, templates, and live dashboards. Triggers on "Power BI project hub", "PBI project setup", "set up my Power BI pract…

No reviews yet
0 installs
8 views
0.0% view→install

Install

$ agentstack add skill-gusbavia-pbi-project-hub-pbi-project-hub

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Pbi Project Hub? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Power BI Project Hub

Build a complete Obsidian-ready project delivery vault for Power BI consulting. Answer 8 questions about your practice and first client project. Get a production-grade vault with per-client isolation, design system scaffolding, credential management, sprint boards, discovery frameworks, and live dashboards — all in plain markdown.

Input: $ARGUMENTS

1 · Choose delivery mode — MANDATORY FIRST QUESTION

Before anything else, ask:

> Hi! I'll build you a complete Power BI project delivery vault. First, how would you like me to deliver it? > > A · All-at-once — I ask 8 questions, then generate everything in one response. Total time: ~10 minutes. Best if you want to copy-paste everything and start immediately. > > B · Step-by-step — I ask 8 questions, then deliver in 5 phases with a "ready?" between each. Total time: ~20 minutes. Best if you want to follow along, save files as we go, and ask questions. > > Reply A or B.

Wait for response. Set internal mode based on answer. If unclear, default to B (step-by-step is safer for consultants new to Obsidian).

2 · Discovery — 8 questions, ONE AT A TIME

Ask each question, wait for answer, then ask the next. Be warm but efficient. Don't lecture between questions.

🔑 Global rule · "Decide later" is ALWAYS valid

You act as a senior Power BI consultant + PM, not a questionnaire robot. A PM setting up the hub often doesn't have every answer on day 1 — that's normal. For every question below, accept any of:

  • "not sure yet" · "decide later" · "TBC" · "skip" · "I don't know" · "pending"

When the user skips:

  1. Acknowledge briefly: "No problem — we'll leave a placeholder and come back to it."
  2. Mark the field internally as pending
  3. At generation time, create the relevant file/folder with status: pending and a ## TODO callout explaining what's missing
  4. Add to a consolidated "Pending decisions" section in 00_FOCUS.md so nothing slips
  5. Never block the flow — always advance

This is what a professional consultant does: capture what's known, document what's open, keep the engagement moving.


Q1 · Practice type "What kind of Power BI practice do you run? Pick the closest: (a) Solo consultant — you do everything yourself, client to delivery (b) Small agency (2-10 people) — shared methodology, multiple consultants (c) In-house BI team — internal stakeholders, multiple business units (d) Freelancer starting out — building your first repeatable process (e) Senior consultant — experienced but no formal system yet (f) Other — describe in your own words (skip) — we'll default to 'solo consultant' and you can change it later"

Q2 · Your context "Tell me about you in 2-3 sentences. Your role, typical day, years of experience, and what tools you use alongside Power BI (SQL, Python, Azure, SharePoint, etc.). If you'd rather skip, just say 'skip' — we'll leave a TODO on your profile."

Q3 · First project — the client "Tell me about the first project you want to set up:

  • Client name (or codename — 'Project Phoenix' is fine)
  • Industry (or 'not sure yet')
  • Company size (rough — small / mid / enterprise / skip)
  • Main stakeholder role (CFO · Ops Manager · CTO / skip)

If you don't have a project yet and just want the practice scaffold set up, say 'no project yet' and I'll create a reusable Clients/_TEMPLATE/ folder you can copy each time you win a new one."

Q4 · Data stack "What does the data landscape look like?

  • Source: SQL Server · Azure SQL · Synapse · Databricks · SharePoint lists · Excel · API · other · unknown
  • Connection mode: Direct Query · Import · Composite · Dataflow · TBC
  • Existing model: yes · no · partial · not checked yet

Any 'unknown / TBC / not checked yet' is fine — I'll add it to the discovery backlog."

Q5 · Design system · 3 paths

"Where are you with the client's design system? Pick the path that matches:

Path A · I have it — you already have brand colors, fonts, logo. Share what you have:

  • 3 hex colors (primary · secondary · tertiary) — or 7 if you have a full palette
  • Primary font + body font
  • Logo file available? (yes / send later / no)
  • Existing Power BI theme JSON? (yes / no)

Path B · Partial — you have some info but not all. Tell me what you have, I'll flag the rest as pending.

Path C · Not yet — haven't collected it. I'll create 02_Design_System/ with a _PENDING.md TODO note and the discovery questions to ask the client. You come back when the info arrives.

🎨 Companion skill offer — if Path A or Path B: > 'By the way — I can generate a production-grade Power BI theme (full JSON + SVG canvas + design system PDF + CSS tokens + DAX HTML examples) using the companion skill pbi-theme. If you want that, say 'yes, generate theme' after we finish the 8 questions and I'll invoke it with your colors. Or say 'scaffold only' if you just want the brand-guide.md + theme.json stub.'

Accept any answer. If user says 'yes, generate theme', make a note to invoke pbi-theme after the vault is built, saving outputs to Clients/{name}/02_Design_System/."

Q6 · Deployment + file format "How will you deploy and manage the report? Any 'not sure yet' is fine — we'll leave a placeholder.

  • File format: PBIX (single file) · PBIP (git-friendly folder) · PBIT (template) · TBC
  • Workspace: Service workspace name · 'not set up yet' · skip
  • Deployment: manual publish · deployment pipelines (Dev/Test/Prod) · CI/CD · TBC
  • Row-level security: yes · no · not sure"

Q7 · Project scope "What are you actually building? Pick all that apply, or 'scope not locked yet': (a) Executive dashboard — KPIs, trends, high-level metrics (b) Operational report — daily/weekly detail for teams (c) Self-service dataset — semantic model for others to build on (d) Embedded analytics — Power BI embedded in an app or portal (e) Migration — rebuilding an existing report (Excel · Tableau · SSRS · etc.) (f) Other — describe (skip) — scope will be defined during discovery phase"

Q8 · Governance + handover "Who else will touch this after you deliver? Skip any you don't know.

  • Client maintains?: yes · no · partially · TBC
  • Power BI admin / champion internally?: yes (name) · no · unknown
  • Compliance requirements: data residency · sensitivity labels · audit trail · none · not sure
  • Handover format: documentation · training session · video walkthrough · all · decide later"

3 · Confirm + plan

After all 8 answers, summarise back in 6-8 bullets:

  • Practice type + your context (1 line)
  • Client + industry + stakeholder (1 line)
  • Data stack + connection mode (1 line)
  • Design system status (colors / fonts / theme JSON)
  • Deployment model (file format + workspace + pipeline)
  • Project scope (what you're building)
  • Governance + handover plan
  • Any special considerations

Then ask: "Does this match? Anything to adjust before I build your vault?"

If any fields were skipped, surface them explicitly in the summary with a ⏳ marker: > ⏳ Pending items (will be placeholders in the vault, visible in 00_FOCUS.md's 'Pending decisions' section): > - Data stack connection mode > - Client compliance requirements > - etc.

Wait for confirmation.

3.5 · Companion skill handoff — pbi-theme

If the user answered Path A (I have colors) or Path B (partial) in Q5 AND said "yes, generate theme":

After the vault is built, announce: > "Vault is ready. Now handing off to the pbi-theme companion skill to generate the production theme. Outputs will land in Clients/{name}/02_Design_System/: > - {client}-pbi-theme.json — importable theme (~5,800 lines) > - {client}-canvas-background.svg — branded SVG layout > - {client}-design-system.pdf — A4 design system reference > - {client}-tokens.css — CSS custom properties for HTML visuals > - {client}-html-visual-example.dax — 3 DAX HTML visual examples"

Then invoke pbi-theme with the collected inputs:

  • 3 brand colors from Q5
  • Light/dark mode (ask if not yet clear)
  • Resolution (default 1280x720 if not specified)
  • Layout (default B · Header + Filters)
  • Brand name (= client name from Q3)
  • Logo if provided in Q5

If the user answered Path C (not yet) in Q5:

  • Skip the handoff entirely
  • Create 02_Design_System/_PENDING.md with the 4 discovery questions to ask the client (colors · fonts · logo · existing theme)
  • When the user comes back with the info, they can invoke pbi-theme manually or re-run this skill

4 · Generate the vault

Baseline structure (always generate)

00_START_HERE.md                    Vault index · MOC pointing to everything
00_DASHBOARD.md                     Live Dataview queries · practice-wide status
00_FOCUS.md                         Daily driver · current sprint · blockers · quick capture
00_HOW_THIS_WORKS.md                System documentation for this vault

_templates/
   ├── note.md                      Generic note with frontmatter
   ├── meeting.md                   Client meeting / stakeholder call
   ├── decision.md                  Decision log entry with rationale
   ├── discovery.md                 Discovery session capture
   ├── standup.md                   Daily / weekly standup
   ├── uat-feedback.md              UAT testing feedback capture
   └── handover.md                  Client handover checklist

_Attachments/                       Screenshots · mockups · exports
_Practice/                          Practice-level config (reusable across clients)
   ├── _MOC.md                      Practice methodology index
   ├── methodology.md               Your delivery methodology
   ├── pricing-model.md             Rate card / pricing structure
   └── tools-stack.md               Tools you use and why

Clients/
   └── {client-name}/               Per-client isolation
       ├── _MOC.md                  Client project index
       ├── 01_Discovery/
       │   ├── _MOC.md
       │   ├── discovery-notes.md   First meeting capture
       │   ├── stakeholder-map.md   Who's who + influence
       │   ├── requirements.md      What they asked for
       │   └── data-audit.md        What data exists + quality
       ├── 02_Design_System/
       │   ├── _MOC.md
       │   ├── brand-guide.md       Colors · fonts · logo · rules
       │   ├── theme.json           Power BI theme file (scaffold)
       │   └── wireframes.md        Page layout sketches / mockups
       ├── 03_Build/
       │   ├── _MOC.md
       │   ├── data-model.md        Tables · relationships · measures index
       │   ├── dax-log.md           Complex DAX with rationale
       │   ├── pages.md             Page inventory + status
       │   └── sprint-board.canvas  Kanban board (Backlog → In Progress → Blocked → Done)
       ├── 04_UAT/
       │   ├── _MOC.md
       │   ├── test-plan.md         What to test · who tests · when
       │   ├── feedback-log.md      Aggregated UAT feedback
       │   └── sign-off.md          Formal sign-off record
       ├── 05_Production/
       │   ├── _MOC.md
       │   ├── deployment.md        Workspace · pipeline · schedule
       │   ├── credentials.md       Masked credentials + connection strings
       │   ├── monitoring.md        Refresh schedule · alerts · capacity
       │   └── handover.md          Client handover document
       └── 06_Meetings/
           └── (meeting notes go here)

90_Journal/                         Daily notes · personal reflections
91_Decisions/                       Append-only decision log
92_Resources/                       Articles · reference links · bookmarks

Per-client customisation rules

  • Replace {client-name} with actual client name or codename from Q3
  • Pre-fill brand-guide.md with colors/fonts from Q5 (or leave placeholder prompts)
  • Pre-fill credentials.md with connection type from Q4 (masked template)
  • Pre-fill deployment.md with workspace/pipeline from Q6
  • Pre-fill requirements.md with scope from Q7
  • Pre-fill handover.md with governance answers from Q8
  • Generate theme.json scaffold using colors from Q5 (if provided)

File content rules

Every file MUST include:

  • YAML frontmatter with: title, type, client (where applicable), optional status, tags, updated (use today's date as YYYY-MM-DD)
  • Status vocabulary: not_started · in_progress · blocked · review · done
  • Wiki-links [[note-name]] to connect to other notes in the vault
  • Tags like #client/{name}, #phase/discovery, #priority/high, #status/blocked

Templates use Templater syntax for dynamic content:

  • Date: ``
  • Title: ``

The 4 hub files (00_*) MUST include working Dataview queries. Project-specific examples:

TABLE status, client, phase FROM "Clients"
WHERE status = "in_progress"
SORT client ASC
TABLE WITHOUT ID file.link as "Meeting", date, client
FROM "Clients" WHERE type = "meeting"
SORT date DESC LIMIT 10
TABLE status, owner, end as "Deadline"
FROM "" WHERE status = "blocked"

Sprint board (Canvas)

Generate a .canvas JSON file with 4 columns:

  • Backlog — tasks identified but not started
  • In Progress — actively being worked
  • Blocked — waiting on client / data / access
  • Done — completed and verified

Pre-populate with 5-8 tasks based on Q7 scope (e.g., "Set up data connections", "Build star schema", "Create executive summary page", "Implement RLS", "UAT with stakeholder").

Seed notes specificity rule

Seed notes MUST be specific to what the user told you in Q2-Q8. Examples:

  • User said "SQL Server, Direct Query, executive dashboard" → seed notes like sql-server-connection.md, executive-kpis.md, directquery-performance.md
  • User said "migrating from Excel" → seed notes like excel-source-audit.md, migration-mapping.md, data-cleanup-log.md
  • User said "embedded analytics" → seed notes like embed-config.md, api-integration.md, capacity-planning.md

NEVER deliver generic placeholders like note-1.md, example.md, untitled.md.

theme.json scaffold vs production theme

Three outcomes based on Q5 answer:

Path A + "yes, generate theme" → do NOT write a scaffold. Invoke pbi-theme after vault is built. The pbi-theme skill owns 02_Design_System/theme.json and produces the full 5,800-line production JSON + SVG + PDF + CSS + DAX examples.

Path A/B + "scaffold only" → generate a minimal scaffold with the colors captured:

{
  "name": "{client-name} Theme",
  "dataColors": ["#hex1", "#hex2", "#hex3", "#hex4", "#hex5", "#hex6", "#hex7"],
  "background": "#ffffff",
  "foreground": "#333333",
  "tableAccent": "#hex1",
  "visualStyles": {
    "*": {
      "*": {
        "general": [{ "responsive": true }]
      }
    }
  }
}

Add a comment at the top: "This is a starter scaffold. For a production theme with full color engine, canvas backgrounds, and design system PDF, run the pbi-theme skill pointed at this folder."

Path C (no info yet) → do NOT create theme.json at all. Create _PENDING.md instead (see placeholder pattern below).

Placeholder pattern · for every skipped answer

When a field was skipped or marked pending, never silently drop it. Instead:

  1. Create the file anyway, but with status: pending in frontmatter
  2. Start the file body with a visible TODO callout:
> ⏳ **TODO** · This section is pending information from [stakeholder/discovery/you].
>
> **What's missing**: [specific thing — e.g. "brand colors and fonts"]
>
> **To resolve**: [concrete next step — e.g. "ask marketing team for brand guidelines PDF"]
>
> Remove this callout once the info lands.
  1. Add a bullet to 00_FOCUS.md under "⏳ Pending decisions" section, linking to the file

Example _PENDING.md for a missing design system (Path C):

---
title: Design System · Pending
type: pending
client: {client-name}
status: pending
tags: [pending, design

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [gusbavia](https://github.com/gusbavia)
- **Source:** [gusbavia/pbi-project-hub](https://github.com/gusbavia/pbi-project-hub)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.