quality-check

Run local quality checks on skills-for-fabric before committing. Validates all skills in the skills/ folder for structural compliance, semantic disambiguation, broken references, and content quality. Use before submitting a PR to catch issues early. Triggers: "check my skills", "run quality check", "validate skills", "pre-commit check", "lint skills".

245 stars

Best use case

quality-check is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Run local quality checks on skills-for-fabric before committing. Validates all skills in the skills/ folder for structural compliance, semantic disambiguation, broken references, and content quality. Use before submitting a PR to catch issues early. Triggers: "check my skills", "run quality check", "validate skills", "pre-commit check", "lint skills".

Teams using quality-check should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/quality-check/SKILL.md --create-dirs "https://raw.githubusercontent.com/microsoft/skills-for-fabric/main/.github/skills/quality-check/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/quality-check/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How quality-check Compares

Feature / Agentquality-checkStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Run local quality checks on skills-for-fabric before committing. Validates all skills in the skills/ folder for structural compliance, semantic disambiguation, broken references, and content quality. Use before submitting a PR to catch issues early. Triggers: "check my skills", "run quality check", "validate skills", "pre-commit check", "lint skills".

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Local Quality Check

Run quality checks on all skills before committing to catch issues early.

## When to Use

- Before creating a PR with skill changes
- After adding or modifying a skill
- To validate cross-references and semantic conflicts

## Prerequisites

Ensure Python 3.8+ and dependencies are installed:

```bash
pip install PyYAML requests
```

## Running the Check

### From Repository Root

```bash
# Navigate to skills-for-fabric root
cd /path/to/skills-for-fabric

# Run quality checker
python .github/workflows/quality_checker.py
```

### PowerShell (Windows)

```powershell
cd C:\path\to\skills-for-fabric
python .github\workflows\quality_checker.py
```

## Understanding Results

### Exit Codes

| Code | Meaning |
|------|---------|
| 0 | All checks passed (or only warnings) |
| 1 | Critical issues found - must fix before PR |
| 2 | Script error |

### Output Report

The checker creates `quality-report.json` with detailed findings. Key sections:

```json
{
  "overall_status": "PASSED|WARNING|CRITICAL",
  "critical_count": 0,
  "warning_count": 3,
  "semantic_conflicts": [],
  "duplicate_triggers": [],
  "broken_references": [],
  "structural_issues": [],
  "content_warnings": [],
  "skills": { ... }
}
```

## Quality Checks Performed

### Critical (Must Fix)

| Check | What It Validates |
|-------|-------------------|
| YAML Frontmatter | `name` and `description` fields present |
| Description Length | Description ≤ 1023 characters |
| Update Notice | Blockquote with update check instructions |
| Cross-References | All `[text](path)` links resolve to existing files |
| Trigger Uniqueness | No duplicate trigger phrases across skills |
| Semantic Disambiguation | Descriptions don't overlap >70% with other skills |

### Warnings (Should Fix)

| Check | What It Validates |
|-------|-------------------|
| Description Length Warning | Description approaching limit (≥ 900 chars) |
| Must/Prefer/Avoid | Guidance sections present |
| Examples | Code examples or prompt/response pairs |
| Code Block Tags | Language tags on fenced code blocks |
| Description Quality | Mentions technologies |
| Naming Convention | Follows `{endpoint}-authoring/consumption-{access}` |
| External Links | URLs are accessible (sampled) |

## Fixing Common Issues

### Missing Frontmatter

Add at the top of SKILL.md:

```yaml
---
name: my-skill-name
description: >
  Clear description ...
---
```

### Missing Update Notice

Add after frontmatter:

```markdown
> **Update Check — ONCE PER SESSION (mandatory)**
> The first time this skill is used in a session, run the **check-updates** skill before proceeding.
> - **GitHub Copilot CLI / VS Code**: invoke the `check-updates` skill.
> - **Claude Code / Cowork / Cursor / Windsurf / Codex**: compare local vs remote package.json version.
> - Skip if the check was already performed earlier in this session.

> **CRITICAL NOTES**
> 1. To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering
> 2. To find the item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace and, then, use JMESPath filtering
```

### Broken Reference

Check the path exists. Common mistake:
- Wrong: `../sqlep-consumption-cli/SKILL.md`
- Right: `../sqldw-consumption-cli/SKILL.md`

### Untagged Code Block

Add language after opening fence:
- Wrong: ` ``` `
- Right: ` ```bash ` or ` ```sql `

### Semantic Conflict

Differentiate your skill's description from the conflicting skill. Make trigger phrases unique.

## Must

- Run quality check before every PR
- Fix all critical issues before submitting
- Review warnings and fix where appropriate
- After running the automated check, review all skills in the skills/ folder for content quality: Is the content appropriate? Redundant ())things you know already)? Too verbose? Too lightweight? Comment and make suggestions without changing anything yet
  
## Prefer

- Run check after each significant change
- Keep `quality-report.json` out of commits (add to .gitignore)
- Address warnings to improve skill discoverability

## Avoid

- Submitting PRs with critical issues
- Ignoring semantic conflicts (causes AI routing problems)
- Leaving broken cross-references

Related Skills

check-updates

245
from microsoft/skills-for-fabric

Check for skills-for-fabric marketplace updates at session start. Compares local version against GitHub releases and shows changelog if updates are available. Use when the user wants to: (1) check for skill updates, (2) see what's new in skills-for-fabric, (3) verify current version. Triggers: "check for updates", "am I up to date", "what version", "update skills", "show changelog".

best-practices-check

245
from microsoft/skills-for-fabric

Verify skills-for-fabric against Microsoft Fabric best practices from the internet. Searches for current best practices, compares them against skill content, and identifies gaps or improvements. Use when the user wants to: (1) validate a skill covers industry best practices, (2) find missing guidance, (3) improve skill quality with current recommendations. Triggers: "check best practices", "validate best practices", "best practices for", "compare against best practices", "skill coverage".

sqldw-consumption-cli

245
from microsoft/skills-for-fabric

Execute read-only T-SQL queries against Fabric Data Warehouse, Lakehouse SQL Endpoints, and Mirrored Databases via CLI. Default skill for any lakehouse data query (row counts, SELECT, filtering, aggregation) unless the user explicitly requests PySpark or Spark DataFrames. Use when the user wants to: (1) query warehouse/lakehouse data, (2) count rows or explore lakehouse tables, (3) discover schemas/columns, (4) generate T-SQL scripts, (5) monitor SQL performance, (6) export results to CSV/JSON. Triggers: "warehouse", "SQL query", "T-SQL", "query warehouse", "show warehouse tables", "show lakehouse tables", "query lakehouse", "lakehouse table", "how many rows", "count rows", "SQL endpoint", "describe warehouse schema", "generate T-SQL script", "warehouse performance", "export SQL data", "connect to warehouse", "lakehouse data", "explore lakehouse".

sqldw-authoring-cli

245
from microsoft/skills-for-fabric

Execute authoring T-SQL (DDL, DML, data ingestion, transactions, schema changes) against Microsoft Fabric Data Warehouse and SQL endpoints from agentic CLI environments. Use when the user wants to: (1) create/alter/drop tables from terminal, (2) insert/update/delete/merge data via CLI, (3) run COPY INTO or OPENROWSET ingestion, (4) manage transactions or stored procedures, (5) perform schema evolution, (6) use time travel or snapshots, (7) generate ETL/ELT shell scripts, (8) create views/functions/procedures on Lakehouse SQLEP. Triggers: "create table in warehouse", "insert data via T-SQL", "load from ADLS", "COPY INTO", "run ETL with T-SQL", "alter warehouse table", "upsert with T-SQL", "merge into warehouse", "create T-SQL procedure", "warehouse time travel", "recover deleted warehouse data", "create warehouse schema", "deploy warehouse", "transaction conflict", "snapshot isolation error".

spark-consumption-cli

245
from microsoft/skills-for-fabric

Analyze lakehouse data interactively using Fabric Livy sessions and PySpark/Spark SQL for advanced analytics, DataFrames, cross-lakehouse joins, Delta time-travel, and unstructured/JSON data. Use when the user explicitly asks for PySpark, Spark DataFrames, Livy sessions, or Python-based analysis — NOT for simple SQL queries. Triggers: "PySpark", "Spark SQL", "analyze with PySpark", "Spark DataFrame", "Livy session", "lakehouse with Python", "PySpark analysis", "PySpark data quality", "Delta time-travel with Spark".

spark-authoring-cli

245
from microsoft/skills-for-fabric

Develop Microsoft Fabric Spark/data engineering workflows with intelligent routing to specialized resources. Provides core workspace/lakehouse management and routes to: data engineering patterns, development workflow, or infrastructure orchestration. Use when the user wants to: (1) manage Fabric workspaces and resources, (2) develop notebooks and PySpark applications, (3) design data pipelines and orchestration, (4) provision infrastructure as code. Triggers: "develop notebook", "data engineering", "workspace setup", "pipeline design", "infrastructure provisioning", "Delta Lake patterns", "Spark development", "lakehouse configuration", "organize lakehouse tables", "create Livy session", "notebook deployment".

powerbi-consumption-cli

245
from microsoft/skills-for-fabric

The ONLY supported path for read-only Microsoft Fabric Power BI semantic model (formerly "Power BI dataset") query interactions. Execute DAX queries via the MCP server ExecuteQuery tool to: (1) discover semantic model metadata (tables, columns, measures, relationships, hierarchies, etc.) and their properties, (2) retrieve data from a semantic model. Triggers: "DAX query", "semantic model metadata", "list semantic model tables", "run EVALUATE", "get measure expression".

powerbi-authoring-cli

245
from microsoft/skills-for-fabric

Create, manage, and deploy Power BI semantic models inside Microsoft Fabric workspaces via `az rest` CLI against Fabric and Power BI REST APIs. Use when the user wants to: (1) create a semantic model from TMDL definition files, (2) retrieve or download semantic model definitions, (3) update a semantic model definition with modified TMDL, (4) trigger or manage dataset refresh operations, (5) configure data sources, parameters, or permissions, (6) deploy semantic models between pipeline stages. Covers Fabric Items API (CRUD) and Power BI Datasets API (refresh, data sources, permissions). For read-only DAX queries, use `powerbi-consumption-cli`. For fine-grained modeling changes, route to `powerbi-modeling-mcp`. Triggers: "create semantic model", "upload TMDL", "download semantic model TMDL", "refresh dataset", "semantic model deployment pipeline", "dataset permissions", "list dataset users", "semantic model authoring".

eventhouse-consumption-cli

245
from microsoft/skills-for-fabric

Run KQL queries against Fabric Eventhouse for real-time intelligence and time-series analytics using `az rest` against the Kusto REST API. Covers KQL operators (where, summarize, join, render), Eventhouse schema discovery (.show tables), time-series patterns with bin(), and ingestion monitoring. Use when the user wants to: 1. Run read-only KQL queries against an Eventhouse or KQL Database 2. Discover Eventhouse table schema and metadata 3. Analyse real-time or time-series data with KQL operators 4. Monitor ingestion health and active KQL queries 5. Export KQL results to JSON Triggers: "kql query", "kusto query", "eventhouse query", "kql database", "real-time intelligence", "time-series kql", "query eventhouse", "explore eventhouse", "show tables kql"

eventhouse-authoring-cli

245
from microsoft/skills-for-fabric

Execute KQL management commands (table management, ingestion, policies, functions, materialized views) against Fabric Eventhouse and KQL Databases via CLI. Use when the user wants to: 1. Create or alter KQL tables, columns, or functions 2. Ingest data into an Eventhouse (inline, from storage, streaming) 3. Configure retention, caching, or partitioning policies 4. Create or manage materialized views and update policies 5. Manage data mappings for ingestion pipelines 6. Deploy KQL schema via scripts Triggers: "create kql table", "kql ingestion", "ingest into eventhouse", "kql function", "materialized view", "kql retention policy", "eventhouse schema", "kql authoring", "create eventhouse table", "kql mapping"

e2e-medallion-architecture

245
from microsoft/skills-for-fabric

Implement end-to-end Medallion Architecture (Bronze/Silver/Gold) lakehouse patterns in Microsoft Fabric using PySpark, Delta Lake, and Fabric Pipelines. Use when the user wants to: (1) design a Bronze/Silver/Gold data lakehouse, (2) set up multi-layer workspace with lakehouses for each tier, (3) build ingestion-to-analytics pipelines with data quality enforcement, (4) optimize Spark configurations per medallion layer, (5) orchestrate Bronze-to-Silver-to-Gold flows via notebooks. Triggers: "medallion architecture", "bronze silver gold", "lakehouse layers", "e2e data pipeline", "end-to-end lakehouse", "data lakehouse pattern", "multi-layer lakehouse", "build medallion", "setup medallion".

skill-test

245
from microsoft/skills-for-fabric

Manage the skills-for-fabric evaluation framework: add eval plans for new or existing skills, list available tests and their results, generate eval datasets, review metrics, and check test coverage. Directs test execution to the tests/ folder. Triggers: "add tests", "add evals", "list tests", "show eval results", "run tests", "generate eval data", "eval metrics", "test coverage", "missing tests". "show tests"