Agent Skills for fabio — the agent-first CLI for Microsoft Fabric.
Prerequisites: Requires Node.js v18+ (which bundles
npmandnpx). Install via nodejs.org, or use a version manager like nvm, fnm, or volta.
npx skills add iemejia/fabio-skillsThis installs the fabio skill into your project's .agents/skills/ directory, making it available to GitHub Copilot (Agent mode), Claude Code, OpenCode, Cursor, and any other compatible agent.
Install globally (available in all projects):
npx skills add iemejia/fabio-skills --globalInstall for a specific agent only:
npx skills add iemejia/fabio-skills --agent github-copilotVerify installation:
npx skills listIn VS Code with GitHub Copilot, switch to Agent mode and type /skills to confirm fabio appears in the list.
Prerequisites: Requires GitHub CLI v2.90.0 or later.
The gh skill command can search, preview, install, and update agent skills directly from GitHub repositories.
# Preview the skill before installing (inspect contents without installing)
gh skill preview iemejia/fabio-skills fabio
# Install interactively (browse available skills in the repo)
gh skill install iemejia/fabio-skills
# Install directly
gh skill install iemejia/fabio-skills fabio
# Install a specific version
gh skill install iemejia/fabio-skills fabio@v0.25.0
# Install pinned to a version (skipped during updates)
gh skill install iemejia/fabio-skills fabio --pin v0.25.0
# Install for a specific agent and scope
gh skill install iemejia/fabio-skills fabio --agent claude-code --scope userUpdate skills:
# Check for updates interactively
gh skill update
# Update a specific skill
gh skill update fabio
# Update all installed skills
gh skill update --allIn the GitHub Copilot CLI, use /skills list to verify and /skills reload after installing.
No tooling required beyond git. Clone the repository and copy the skill folder to the correct location:
git clone https://github.com/iemejia/fabio-skills.git /tmp/fabio-skills
# Project-level (current repo only)
cp -r /tmp/fabio-skills/fabio .agents/skills/fabio
# Global (all projects)
cp -r /tmp/fabio-skills/fabio ~/.agents/skills/fabiocurl -fsSL https://github.com/iemejia/fabio-skills/archive/refs/heads/main.tar.gz | \
tar xz --strip-components=1 -C .agents/skills/ fabio-skills-main/fabioOr with gh:
gh repo clone iemejia/fabio-skills /tmp/fabio-skills
cp -r /tmp/fabio-skills/fabio .agents/skills/fabiogit submodule add https://github.com/iemejia/fabio-skills.git .agents/skills-repos/fabio-skills
ln -s .agents/skills-repos/fabio-skills/fabio .agents/skills/fabioIf you install manually, place the skill in the correct directory for your agent:
| Agent | Location |
|---|---|
| GitHub Copilot (VS Code) | .agents/skills/fabio/ or .github/skills/fabio/ |
| GitHub Copilot CLI | .agents/skills/fabio/ or ~/.copilot/skills/fabio/ |
| Claude Code | .agents/skills/fabio/ |
| OpenCode | .agents/skills/fabio/ or configure in opencode.json |
| Cursor | .cursor/skills/fabio/ |
| Gemini CLI | .gemini/skills/fabio/ |
| OpenAI Codex | .agents/skills/fabio/ |
| Global (all agents) | ~/.agents/skills/fabio/ |
The npx skills add and gh skill install commands handle placement automatically based on detected agents.
The skill teaches agents how to use fabio, but you still need the tool itself and its companion CLIs installed on the machine:
# Auto-detect OS/arch, download latest release, install to ~/.local/bin
bash .agents/skills/fabio/scripts/install.shOr manually:
VERSION=$(curl -s https://api.github.com/repos/iemejia/fabio/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
curl -fsSL "https://github.com/iemejia/fabio/releases/download/${VERSION}/fabio-linux-x64.tar.gz" | tar xz -C ~/.local/binOr with gh:
gh release download --repo iemejia/fabio --pattern "fabio-linux-x64.tar.gz"
tar xzf fabio-linux-x64.tar.gz -C ~/.local/binOr build from source (requires Rust 1.85+):
cargo install --git https://github.com/iemejia/fabio.git| Tool | Why | Install |
|---|---|---|
az (Azure CLI) |
Supplementary Azure operations outside Fabric scope (networking, IAM, storage). | Install Azure CLI |
gh (GitHub CLI) |
Download fabio releases easily. Useful when Fabric workspaces are connected to GitHub repos via fabio git connect. |
Install GitHub CLI |
fabio auth login
fabio auth statusOnce installed, the skill activates automatically when you ask Copilot (in Agent mode) about Microsoft Fabric tasks:
- "Create a lakehouse and upload these CSV files as Delta tables"
- "Query the warehouse for monthly revenue by country"
- "Set up an eventstream pipeline from custom endpoint to KQL database"
- "Run the ETL notebook and wait for completion"
- "Connect this workspace to our GitHub repo"
The agent will use fabio commands with structured JSON output, handling authentication, pagination, error recovery, and LRO polling automatically.
| Area | Capabilities |
|---|---|
| Data Storage | Lakehouses, warehouses, SQL databases, file upload/download, Delta table loading |
| Compute | Notebooks (run + wait), Spark jobs, data pipelines, environments |
| Analytics | Semantic models (Direct Lake TMDL), DAX queries, reports, dashboards |
| Real-Time | Eventhouses, eventstreams, KQL databases, KQL queries |
| Integration | Git sync, deployment pipelines, connections, domains |
| Administration | Workspace management, role assignments, capacity, governance |
fabio/
├── SKILL.md # Main skill — instructions loaded on activation
├── scripts/
│ └── install.sh # Cross-platform binary installer
└── references/
├── COMMANDS.md # Full command reference (74 groups, 800+ subcommands)
├── API-BEHAVIORS.md # Critical API quirks agents must know
└── EXAMPLES.md # End-to-end workflow examples
The agent loads SKILL.md (~288 lines) when activated. Reference files are loaded on demand only when deeper detail is needed for a specific task.
The skill works with any agent that supports the Agent Skills specification. See the Skill placement by agent table above for the correct directory per agent.
# With npx
npx skills update fabio
# With GitHub CLI
gh skill update fabioThis repository uses a tiered CI pipeline and automated sync to keep the skill accurate and up to date with upstream fabio releases.
All workflows live in .github/workflows/ and run automatically on PRs and pushes:
| Workflow | Trigger | What it does |
|---|---|---|
Tier 1+2: Skill Validation (validate.yml) |
PRs/pushes touching fabio/** or README.md |
Structural validation (frontmatter, line count, required files, internal links) and content quality checks (shell syntax, duplicate commands, PascalCase compliance, version consistency, markdown structure) |
Tier 3: Skill Eval (eval.yml) |
PRs touching fabio/** or tests/** |
Runs promptfoo evals against GitHub Models to test that LLMs produce correct fabio commands when given the skill instructions. Compares pass rates against the base branch and fails on regressions. |
Tier 4: AI Review (ai-review.yml) |
PRs touching fabio/** |
Uses Copilot CLI to perform an automated code review of skill changes, checking command correctness, API behavior accuracy, instruction quality, and spec compliance. Posts findings as a PR comment. |
Sync with fabio releases (sync-with-fabio-releases.yml) |
repository_dispatch (fabio-released) or manual workflow_dispatch |
Automatically updates the skill when a new fabio version is released. Uses Copilot CLI to analyze the release diff, update SKILL.md, COMMANDS.md, API-BEHAVIORS.md, and EXAMPLES.md, then opens a PR. |
Run the same structural and content checks that CI runs:
# Check SKILL.md frontmatter is valid
head -1 fabio/SKILL.md | grep -q "^---" && echo "Frontmatter OK"
# Check line count (must be under 500)
wc -l < fabio/SKILL.md
# Check required files exist
ls fabio/SKILL.md fabio/scripts/install.sh fabio/references/COMMANDS.md fabio/references/API-BEHAVIORS.md fabio/references/EXAMPLES.md
# Validate with npx skills (if Node.js is installed)
npx skills init --check fabio/Run promptfoo evals locally to test instruction quality. Requires Node.js and a GitHub token with models:read scope:
# Install promptfoo
npm install -g promptfoo
# Run evals (uses GitHub Models via Copilot subscription)
GITHUB_TOKEN=your_pat promptfoo eval -c tests/promptfooconfig.yaml
# View results in browser
promptfoo viewThe eval config (tests/promptfooconfig.yaml) tests 18+ scenarios including CRUD operations, PascalCase compliance, composability patterns, SQL/KQL queries, LRO awareness, CI/CD deploy workflows, and error handling.
Run a local AI review of your changes using Copilot CLI:
# Install Copilot CLI
npm install -g @github/copilot
# Generate a diff and review it
git diff > /tmp/my-changes.diff
copilot "Review this skill diff for correctness: $(cat /tmp/my-changes.diff)"When a new fabio version is released, the sync-with-fabio-releases workflow:
- Fetches the release tag, release notes, and diff from the previous version
- Checks out the upstream fabio repo at the release tag
- Assembles context from the release notes, commit log, and fabio's
AGENTS.md - Invokes Copilot CLI with the sync prompt (
.github/prompts/sync-fabio-skill.md) to update all skill files - Validates the result (frontmatter, line count)
- Opens a PR with labels
automatedandfabio-sync
To trigger a manual sync (e.g., to catch up with a missed release):
# Via GitHub CLI
gh workflow run sync-with-fabio-releases.yml -f tag=v0.17.0
# Or via the Actions tab on GitHub (workflow_dispatch with optional tag input)When contributing changes:
- Keep
fabio/SKILL.mdunder 500 lines — move detailed content toreferences/ - Use shell variables (
$WS,$LH,$WH) in command examples for composability - Document API quirks with the exact error message that revealed them
- Test locally with
npx skills init --check fabio/before pushing - If adding new commands, also add a corresponding eval test case in
tests/promptfooconfig.yaml
MIT