AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Fabric Variable Library

skill-wardawgmalvicious-claude-config-fabric-variable-library · by wardawgmalvicious

Use for Microsoft Fabric Variable Library — config-as-code for parameterizing notebooks and pipelines across environments. Covers definition parts (variables.json, settings.json, valueSets/<name>.json — VariableLibrary does NOT support the `format` field, omit entirely), supported variable types (String, Boolean, Number, Integer, DateTime, ItemReference), notebook consumption via `notebookutils.v…

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

Install

$ agentstack add skill-wardawgmalvicious-claude-config-fabric-variable-library

✓ 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.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-wardawgmalvicious-claude-config-fabric-variable-library)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Fabric Variable Library? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Fabric Variable Library

Config-as-code for parameterizing notebooks and pipelines per environment. Stored as a Fabric item with definition parts under source control; consumed at runtime via notebookutils.variableLibrary (notebooks) or the libraryVariables block (pipelines).

Definition parts

| Part Path | Content | Required | |---|---|---| | variables.json | Variable names, types, default values | Yes | | settings.json | valueSetsOrder (empty array when no Value Sets) | Yes | | valueSets/.json | Per-environment overrides | Only when using Value Sets | | .platform | Item metadata JSON | No (handled by Git/REST layer) |

Critical: VariableLibrary does NOT support the format field in definition requests. Omit it entirely — including "format": null may cause errors. (See fabric-rest-api skill for the definition envelope.)

Supported variable types

| Type | Description | |---|---| | String | Text | | Boolean | true / false (stored as a string!) | | Number | Floating-point | | Integer | Whole numbers | | DateTime | ISO 8601 | | ItemReference | Fabric item GUID binding ({itemId, workspaceId}) |

variables.json

{
  "$schema": "https://developer.microsoft.com/json-schemas/fabric/item/variableLibrary/definition/variables/1.0.0/schema.json",
  "variables": [
    { "name": "lakehouse_name", "type": "String", "value": "bronze_lakehouse" },
    { "name": "enable_logging", "type": "Boolean", "value": "true" },
    { "name": "target_warehouse", "type": "ItemReference",
      "value": { "itemId": "...", "workspaceId": "..." } }
  ]
}

settings.json + Value Sets

settings.json is always present. valueSetsOrder is an empty array when no Value Sets are used:

{ "$schema": "...", "valueSetsOrder": [] }

When Value Sets are configured, list them in priority order:

{ "$schema": "...", "valueSetsOrder": ["test", "prod"] }

Every entry in valueSetsOrder must have a matching file under valueSets/:

{
  "$schema": "...",
  "name": "dev",
  "variableOverrides": [
    { "name": "lakehouse_name", "value": "bronze_dev" }
  ]
}

Notebook consumption

Use getLibrary() + dot notation:

lib = notebookutils.variableLibrary.getLibrary("MyConfig")
name = lib.lakehouse_name        # String
flag = lib.enable_logging        # Returns string "true" / "false"

# Boolean: compare as string — bool("false") is True in Python!
if flag.lower() == "true":
    ...

Wrong patterns (cause runtime failure or silent bugs):

notebookutils.variableLibrary.get("MyConfig", "lakehouse_name")   # ❌ signature does not exist
bool(flag)                                                         # ❌ "false" → True

Pipeline consumption

Pipelines consume Variable Library values via a libraryVariables block, sibling to activities (not nested):

{
  "properties": {
    "activities": [{
      "name": "Run ETL",
      "type": "TridentNotebook",
      "typeProperties": {
        "notebookId": {
          "value": "@pipeline().libraryVariables.notebook_id",
          "type": "Expression"
        }
      }
    }],
    "libraryVariables": {
      "notebook_id": {
        "libraryName": "MyConfig",
        "libraryId": "",
        "variableName": "notebook_id",
        "type": "String"
      }
    }
  }
}

Each libraryVariables entry needs all four: libraryName, libraryId, variableName, type.

Pipeline type mapping

Pipeline type names DIFFER from Variable Library type names. Map carefully:

| Variable Library Type | Pipeline Type | |---|---| | Boolean | Bool | | Integer | Int | | Number | Double | | DateTime | String | | String | String | | ItemReference | String |

Dynamic references must be wrapped in Expression objects: {"value": "@pipeline().libraryVariables.x", "type": "Expression"}. Bare strings are treated as literals — not resolved.

Runtime ID rule (cross-reference)

ItemReference variable values are passed verbatim to consumers — they are NOT resolved against .platform logicalId. Always store the runtime item ID (the GUID from the Fabric portal URL or GET /v1/workspaces/{wsId}/items response). See fabric-rest-api skill for the runtime-vs-logicalId distinction — using the wrong one is a leading cause of PowerBIEntityNotFound from pipelines.

Gotchas

| Issue | Resolution | |---|---| | .get("lib", "var") fails at runtime | Use getLibrary("lib").var — always dot notation | | bool("false")True | Compare as string: flag.lower() == "true" | | Definition rejected — format field | Omit format entirely — VariableLibrary does not support it | | Pipeline variable wrong type | Map correctly: Boolean→Bool, Integer→Int, Number→Double, DateTime/ItemReference→String | | Pipeline expression treated as literal | Wrap in {"value": "...", "type": "Expression"} | | Pipeline variable not resolving | Include BOTH libraryName and libraryId | | Value Sets ignored | Add valueSetsOrder array to settings.json | | Value Set validation error | Create matching file under valueSets/ for every entry in valueSetsOrder | | PowerBIEntityNotFound from ItemReference | Stored a .platform logicalId instead of the runtime item ID |

Reference

See also

  • fabric-rest-api skill — definition envelope, runtime ID vs logicalId, ?updateMetadata=true flag
  • fabric-spark skill — notebookutils.runtime.context (sibling API to notebookutils.variableLibrary)

Source & license

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

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.