From fabric-skills
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".
How this skill is triggered — by the user, by Claude, or both
Slash command
/fabric-skills:check-updatesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill checks for updates to the skills-for-fabric marketplace at the start of each session.
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:
{
"fabric-skills": "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 fabric-skills@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 rootnpx claudepluginhub jamesdbartlett3/jdb3fork_microsoft_skills-for-fabric --plugin fabric-skillsGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.