skillporter_diagnose
[READ] Diagnose Agent Skill reachability, broken symlinks, SHA-256 content drift, and spec compliance across AI agent harnesses in the workspace.
pathscope
io.github.Shanmukh-l33tPublished by GitHub account Shanmukh-l33tv3.0.1Updated Nov 14, 2026
Read-only MCP server that audits agent skills in one workspace: drift, duplicates, harness support.
Local MCP server that lets an assistant audit, scan, install and sync AI agent skills across 19 coding-agent harnesses in a workspace.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
ONE SKILL. EVERY AGENT.
The package manager, dependency resolver, and supply-chain security layer for AI agent skills.
[PyPI v3.0.1] [npm v3.0.1] [CI status] [19 harnesses supported] [Zero runtime dependencies] [MIT License]
Website · Documentation · Install · 19 Harnesses · Security · MCP Server · FAQ · Blog
Skillporter, is the package manager for AI agent skills. It is a zero runtime dependency CLI and MCP server that installs, pins, audits, synchronizes and rolls back SKILL.md packages across 19 AI coding and autonomous agent harnesses, including Claude Code, OpenAI Codex, Cursor, Windsurf, GitHub Copilot, Gemini CLI, Hermes Agent, OpenHands and Goose.
[Skillporter 3.0 CLI and multi-harness bridge fan-out]
Every AI agent harness reads skills from a different directory (.claude/skills/, .agents/skills/, .github/skills/, .windsurf/skills/, $HERMES_HOME/skills/, ~/.openclaw/skills/), and each one resolves them differently.
.claude/skills/ is invisible to OpenAI Codex, Gemini CLI, Zed, and Windsurf.git worktree, and Windows checkouts..agents/skills/ directories break other agents.sync runs, and an agent loads whatever it finds into its system context.Skillporter treats skills the way a package manager treats dependencies: one manifest, one lockfile, one resolution step, and one install path that every harness can read.
Python 3.9 or newer is required, and the standalone installer checks for it before unpacking anything. The package ships with no runtime dependencies, so there is nothing else to audit or pin.
Agent skills are untrusted supply chain packages: an agent loads SKILL.md directly into its system context and executes bundled scripts. Skillporter is built around that assumption rather than around convenience.
skillporter.lock pins resolved Git commits, SHA-256 tree digests, and per-file hashes, blocking unexpected upstream mutations during sync.../, ..\, drive paths, Windows reserved device names, Unicode NFC/NFD collisions, symlinks, special files, decompression bombs) and stages installs transactionally with crash recovery journals.skillporter mcp to the workspace root with default-deny write permissions (SKILLPORTER_MCP_ALLOW_WRITES=1 opt-in) and separates conflict overrides (--force) from security risk overrides (--allow-risky).Important security note: static scanning (
STATIC_SECURITY_ASSESSMENT) inspects files for known dangerous patterns and structural anomalies. A clean static scan is not proof that a skill is safe at runtime. Novel natural-language prompt injections or dynamically fetched payloads can still steer an agent at runtime.
How the scan is graded and where its limits are is documented in SECURITY.md.
skillporter.lock is the reproducible record of what is installed:
resolved_commit, tree_hash, per-file SHA-256 file_hashes, pin_state (PINNED_COMMIT, PINNED_CONTENT or UNPINNED_MUTABLE), dependencies, and adapter version.skillporter sync honors locked Git commit SHAs even when upstream branches move, and rejects unexpected upstream content changes without --force.skillporter lock --check verifies the lockfile in CI and fails on mismatch.skillporter audit reports installed origins, lockfile drift, and .skillporter/audit.jsonl events, so any risk override is visible after the fact.Rollback is transactional rather than a re-download. Replacements are staged in .skillporter/tmp/txn-* behind a write-ahead journal.json, prior versions are snapshotted into .skillporter/backups/, and skillporter rollback restores a skill together with its dependency graph from SHA-256 verified backups.
Skillporter distinguishes support status (NATIVE, COMPATIBLE, ADAPTED) from verification evidence (RUNTIME_VERIFIED, INTEGRATION_TESTED, FIXTURE_TESTED, DOCUMENTATION_VERIFIED). An adapter is never marked RUNTIME_VERIFIED unless it has been tested against a live harness runtime.
Each harness record ships its detection rules, path precedence, and vendor documentation reference. skillporter matrix prints the same matrix from the installed CLI, and skillporter detect reports which harnesses exist on the current machine.
skillporter mcp runs a hardened JSON-RPC 2.0 Model Context Protocol server so an agent can query a workspace instead of shelling out. It exposes nine tools (diagnose, detect, scan, inspect, matrix, add, install, sync, remove), is read-only by default, refuses paths outside the workspace root, and requires an explicit opt-in before any write tool becomes available:
Client setup for Claude Code and other MCP clients is covered in the MCP guide.
0: clean, or the operation succeeded1: policy or diagnostic finding (drift, broken symlink, spec error, security block, lockfile mismatch, cycle or conflict)2: usage or runtime error (invalid argument, unknown harness, missing path)The same guides are versioned in the repository under docs/ if you prefer to read them on GitHub.
Issues and pull requests are welcome. The short version:
Full setup instructions, the required local quality gates, and the adapter checklist are in CONTRIBUTING.md. To report a vulnerability, follow SECURITY.md instead of opening a public issue.
MIT. See LICENSE.
Source: README.md at commit 68adae8
[READ] Diagnose Agent Skill reachability, broken symlinks, SHA-256 content drift, and spec compliance across AI agent harnesses in the workspace.
pathscope[READ] Detect which AI coding and autonomous agent harnesses are installed or active.
path[READ] Run static security and supply-chain checks on a skill directory (secrets, prompt injection, AST/JS/encoded analysis, symlink escapes).
pathrequired[READ] Inspect a workspace or remote skill package structure, metadata, and security posture.
sourcerequired[READ] Return the compatibility matrix of all 19 supported AI agent harnesses.
Takes no parameters.
[WRITE] Install skills from a workspace directory, archive, or repository into target harnesses (requires SKILLPORTER_MCP_ALLOW_WRITES=1).
pathforcesourcerequiredstrategyharnessesrequiredaccept_risk[WRITE] Install a local workspace skill directory into target harnesses (requires SKILLPORTER_MCP_ALLOW_WRITES=1).
pathforceskillrequiredstrategyharnessesrequiredaccept_risk[WRITE] Synchronize workspace skills across target harnesses (requires SKILLPORTER_MCP_ALLOW_WRITES=1).
pathforcestrategyharnessesaccept_risk[WRITE] Remove an installed skill from target harnesses in the workspace (requires SKILLPORTER_MCP_ALLOW_WRITES=1).
pathskillrequiredharnessesrequired90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
uvx skillporter diagnose . # run the CLI without installing it (uv)pipx install skillporter # install the CLI globally (PEP 668 safe)npx @shanmukhdheekonda/skillporter diagnose . # run the CLI without installing it (npm)# Option A: run immediately without a global install, via uvx or npxuvx skillporter diagnose .npx @shanmukhdheekonda/skillporter diagnose .
# Option B: install from PyPI with uv or pipx (PEP 668 safe)uv tool install skillporterpipx install skillporter
# Option C: standalone verified release installer (Linux and macOS)# Verifies SHA256SUMS.txt and the GitHub OIDC provenance attestation# (`gh attestation verify`) or an out-of-band pinned digest# (`SKILLPORTER_SHA256=<64-hex>`). Never falls back to mutable `main`.curl -fsSL https://github.com/Shanmukh-l33t/skillporter/releases/download/v3.0.1/install.sh -o install.shSKILLPORTER_VERSION=v3.0.1 sh install.sh# 1. Run the zero residue interactive demo (heals broken symlinks and SHA-256 drift in a temp dir)skillporter demo
# 2. Install a skill across harnesses (validates spec, runs static security scan, deduplicates .agents/skills)skillporter add anthropics/skills --skill pdf --harness all
# 3. Inspect and security scan skills (text, JSON, or SARIF 2.1.0 for GitHub Code Scanning)skillporter scan .skillporter scan . --format sarif > skillporter.sarif
# 4. Initialize manifest, synchronize transitive dependencies, and verify the reproducible lockfile in CIskillporter initskillporter syncskillporter lock --check
# 5. Diagnose reachability, audit provenance and override logs, or roll back to a verified snapshotskillporter diagnose .skillporter audit .skillporter rollback pdfskillporter mcp # read-onlyskillporter mcp --allow-writes # enable write toolsSKILLPORTER_MCP_ALLOW_WRITES=1 skillporter mcp # same, via the environment