# Pbip Project

> Creates and manages Power BI Desktop Project (PBIP) structure. Use when starting new Power BI projects, setting up folder structure, or configuring project files.

- **Type:** Skill
- **Install:** `agentstack add skill-kpbray-power-bi-agent-skills-pbip-project`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [kpbray](https://agentstack.voostack.com/s/kpbray)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [kpbray](https://github.com/kpbray)
- **Source:** https://github.com/kpbray/power-bi-agent-skills/tree/master/.github/skills/pbip-project

## Install

```sh
agentstack add skill-kpbray-power-bi-agent-skills-pbip-project
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# PBIP Project Skill

This skill helps create and manage Power BI Desktop Project (PBIP) structure for source control-friendly Power BI development.

## When to Use This Skill

- Starting a new Power BI project from scratch
- Converting an existing concept into a PBIP structure
- Setting up the folder structure for semantic models and reports
- Creating pointer files (`.pbip`, `.pbism`, `.pbir`)
- Configuring project-level settings

## PBIP Project Structure

A complete PBIP project has this structure:

```
.pbip                    # Project pointer file
├── .SemanticModel/      # Semantic model folder
│   ├── definition.pbism              # Semantic model pointer
│   ├── model.bim                     # Model metadata (auto-generated)
│   └── definition/                   # TMDL files
│       ├── database.tmdl
│       ├── model.tmdl
│       ├── relationships.tmdl
│       ├── tables/
│       │   └── .tmdl
│       └── expressions.tmdl
├── .Report/             # Report folder
│   ├── definition.pbir               # Report pointer
│   ├── report.json                   # Report configuration
│   └── definition/                   # Report definition files
│       ├── pages/
│       │   └── /
│       │       └── page.json
│       └── ...
└── .pbi/                             # Local settings (gitignored)
    └── localSettings.json
```

## Creating a New PBIP Project

### Step 1: Create the Project Pointer File

Create `.pbip`:

```json
{
  "version": "1.0",
  "artifacts": [
    {
      "report": {
        "path": ".Report"
      }
    }
  ],
  "settings": {
    "enableAutoRecovery": true
  }
}
```

### Step 2: Create the Semantic Model Folder

Create `.SemanticModel/definition.pbism`:

```json
{
  "version": "1.0",
  "datasetReference": {
    "byPath": null,
    "byConnection": null
  }
}
```

### Step 3: Create Core TMDL Files

Create `.SemanticModel/definition/database.tmdl`:

```tmdl
database ''
	compatibilityLevel: 1567
```

Create `.SemanticModel/definition/model.tmdl`:

```tmdl
model Model
	culture: en-US
	defaultPowerBIDataSourceVersion: powerBI_V3
	discourageImplicitMeasures: true
	sourceQueryCulture: en-US
```

### Step 4: Create the Report Folder

Create `.Report/definition.pbir`:

```json
{
  "version": "1.0",
  "datasetReference": {
    "byPath": {
      "path": "../.SemanticModel"
    },
    "byConnection": null
  }
}
```

Create `.Report/report.json`:

```json
{
  "$schema": "https://developer.microsoft.com/json-schemas/fabric/item/report/definition/report/1.0.0/schema.json",
  "themeCollection": {
    "baseTheme": {
      "name": "CY24SU06",
      "reportVersionAtImport": "5.55",
      "type": "SharedResources"
    }
  },
  "config": {
    "version": 5,
    "defaultDrillFilterOtherVisuals": true
  },
  "objects": {}
}
```

## File Format Requirements

### Encoding
- All text files MUST be UTF-8 without BOM
- JSON files use 2-space indentation
- TMDL files use tab indentation

### Line Endings
- Use LF (Unix-style) line endings for cross-platform compatibility
- Configure `.gitattributes` for consistent line endings:

```
*.tmdl text eol=lf
*.json text eol=lf
*.pbip text eol=lf
*.pbism text eol=lf
*.pbir text eol=lf
```

## Git Configuration

### Recommended .gitignore

```
# Local Power BI settings (contains user-specific paths)
.pbi/
**/localSettings.json

# Cache files
*.abf
**/cache.abf

# Temporary files
*.tmp
~$*
```

### Recommended .gitattributes

```
# Ensure consistent line endings
*.tmdl text eol=lf
*.json text eol=lf
*.pbip text eol=lf
*.pbism text eol=lf
*.pbir text eol=lf

# Treat binary files appropriately
*.abf binary
*.pbix binary
```

## Naming Conventions

| Item | Convention | Example |
|------|------------|---------|
| Project name | PascalCase | `SalesAnalytics` |
| Folder names | Match project name | `SalesAnalytics.SemanticModel` |
| TMDL files | lowercase with hyphens | `date-table.tmdl` |
| Page folders | GUID format | `ReportSection1a2b3c4d` |

## Boundaries and Constraints

### DO
- Always create files with UTF-8 encoding (no BOM)
- Always include `compatibilityLevel` in database.tmdl
- Always set `discourageImplicitMeasures: true` in model.tmdl
- Create `.gitignore` to exclude local settings
- Use relative paths in pointer files

### DO NOT
- Never modify `.pbi/localSettings.json` - this is user-specific
- Never commit `cache.abf` files
- Never hardcode absolute file paths
- Never include credentials in source files

## Workflow Integration

After creating the project structure:

1. **Add tables** - Use the `semantic-model` skill to add tables and relationships
2. **Add measures** - Use the `dax` skill to create measures
3. **Create visuals** - Use the `report-visuals` skill to build reports
4. **Validate** - Use the `best-practices` skill to check quality

## Opening in Power BI Desktop

1. Open Power BI Desktop
2. File > Open report
3. Select the `.pbip` file
4. Power BI will load the project from source files

## Common Issues

### "Cannot find semantic model"
- Verify the path in `definition.pbir` points to the correct semantic model folder
- Ensure `definition.pbism` exists in the semantic model folder

### "Invalid TMDL syntax"
- Check for proper indentation (tabs for TMDL)
- Verify quotes match the expected style (single quotes for identifiers)
- Ensure compatibility level is supported

### "Report won't load"
- Check that `report.json` has valid JSON syntax
- Verify the schema reference is correct
- Ensure page folders contain valid `page.json` files

## Source & license

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

- **Author:** [kpbray](https://github.com/kpbray)
- **Source:** [kpbray/power-bi-agent-skills](https://github.com/kpbray/power-bi-agent-skills)
- **License:** MIT

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

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-kpbray-power-bi-agent-skills-pbip-project
- Seller: https://agentstack.voostack.com/s/kpbray
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
