From fabric-consumption
Checks skills-for-fabric marketplace updates weekly via persistent state, compares local package.json version against GitHub releases, shows changelog if available.
npx claudepluginhub microsoft/skills-for-fabric --plugin fabric-consumptionThis skill uses the workspace's default tool permissions.
This skill checks for updates to the skills-for-fabric marketplace at the start of each session.
Updates local pm-skills installation: checks for latest release via GitHub API/git, previews changes, confirms, applies updates, generates report on files changed and new capabilities. Use to stay current.
Checks bopen-tools plugin version against GitHub in ~70ms, returning JSON status (current/outdated/ahead). Use at session start, for update queries, or suspicious skill behavior.
Manages skill updates by checking upstream sources for new versions via mise commands, auditing staleness, generating reports, and bootstrapping sources.toml tracking.
Share bugs, ideas, or general feedback.
This skill checks for updates to the skills-for-fabric marketplace at the start of each session.
Run this check once per week when any skills-for-fabric skill is first invoked. Skip if already checked within the last 7 days.
The update check marker is stored in a persistent, user-level directory shared across all sessions and all plugins in the Fabric Skills marketplace:
~/.config/fabric-collection/last-update-check.json
This file contains a JSON object mapping plugin names to the UTC date (YYYY-MM-DD) of their last update check:
{
"skills-for-fabric": "2026-02-17",
"another-plugin": "2026-02-16"
}
Before checking, read ~/.config/fabric-collection/last-update-check.json:
IMPORTANT — use UTC consistently: Always use the current UTC date when saving and comparing the last-update-check timestamp. Do not use the local system timezone, as it varies across environments and can cause the check to run too often or be skipped. In shell, use
date -u +%Y-%m-%d(Linux/macOS) or(Get-Date).ToUniversalTime().ToString("yyyy-MM-dd")(PowerShell).
Note: Create the
~/.config/fabric-collection/directory if it does not exist. On Windows, use$env:USERPROFILE\.config\fabric-collection\.
Read the version field from the local package.json file in the skills-for-fabric installation directory.
Read the repository field from the local plugin.json (or package.json) to extract the GitHub owner and repo name. Parse the URL to get owner and repo:
plugin.json → "repository": "https://github.com/<owner>/<repo>"
package.json → "repository.url": "https://github.com/<owner>/<repo>.git"
CRITICAL: Use the owner string exactly as it appears in the URL. Do NOT alter, normalize, or "correct" the owner name (e.g., do NOT replace underscores with hyphens). The owner
bocrivat_microsoftuses an underscore — this is intentional and correct.
Use the available tools in your environment to get the latest version. Try methods in strict order — only fall back to the next method if the previous one fails or is unavailable.
IMPORTANT: Methods A and B work with both public and private repositories. Method C only works with public repos. Always attempt A or B first.
Method A — Git CLI (preferred)
If the skills-for-fabric directory is a Git clone, fetch the remote package.json without pulling:
git fetch origin main --quiet
git show origin/main:package.json
Extract the version field from the JSON output. This method is the most reliable because it uses the already-configured remote URL and authentication, and avoids any owner/repo name parsing.
Method B — GitHub MCP tools (preferred for agentic environments)
If you have access to GitHub MCP server tools (e.g., get_file_contents), use them to read the remote package.json. Use the owner and repo extracted in Step 2 exactly as parsed (do not modify the strings):
get_file_contents(owner: "<owner>", repo: "<repo>", path: "package.json")
For this repository, the correct call is:
get_file_contents(owner: "bocrivat_microsoft", repo: "skills-for-fabric", path: "package.json")
Extract the version field from the response. This method works with private repositories because MCP tools use authenticated GitHub access.
Method C — GitHub REST API (fallback only, public repos)
⚠️ Only use this method if Methods A and B both fail or are unavailable. This method does not work with private repositories.
If the repository is public, make a GET request using the owner/repo from Step 2:
GET https://api.github.com/repos/<owner>/<repo>/releases/latest
Extract the tag_name field (e.g., v0.2.0) and remove the v prefix.
Note: This method returns 404 for private repositories. If you receive a 404 error, do NOT assume the repository doesn't exist — retry with Method A or B.
Compare the local version with the remote version using semantic versioning:
Show a brief confirmation and proceed:
✅ skills-for-fabric v0.1.0 is up to date.
Show detailed information:
╔══════════════════════════════════════════════════════════════════╗
║ 🔄 skills-for-fabric Update Available ║
║ ║
║ Current: v0.1.0 → Latest: v0.2.0 ║
╚══════════════════════════════════════════════════════════════════╝
## What's New in v0.2.0
[Display relevant CHANGELOG.md entries here]
## Update Commands
Choose the update method based on how you installed skills-for-fabric:
### GitHub Copilot CLI
/plugin update skills-for-fabric@fabric-collection
### Manual (Git clone)
cd /path/to/skills-for-fabric
git pull
./install.ps1 # Windows
./install.sh # macOS/Linux
─────────────────────────────────────────────────────────────────
Would you like to update now? (The current skill will still work)
After completing the check (regardless of result), update ~/.config/fabric-collection/last-update-check.json with today's UTC date (YYYY-MM-DD) for the current plugin. Create the directory and file if they don't exist. Preserve entries for other plugins already in the file.
~/.config/fabric-collection/last-update-check.jsonIf the update check fails (network error, API rate limit, etc.):
⚠️ Could not check for skills-for-fabric updates (network error).
Continuing with current version (v0.1.0).
Run '/skill check-updates' manually to retry.
Users can manually check for updates at any time:
/skill check-updatesCHANGELOG.md in repository root