@shanmukhdheekonda/skillporter 2.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -189
- package/npm/bin/skillporter.pyz +0 -0
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,158 +1,117 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Skillporter 3.0
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
**Install, manage, validate, security-scan, and synchronize AI-agent skills across the entire agent ecosystem.**
|
|
3
|
+
**The package manager, dependency resolver, and supply-chain security layer for AI agent skills.**
|
|
6
4
|
|
|
7
5
|
[](https://www.python.org/)
|
|
8
|
-
[](pyproject.toml)
|
|
6
|
+
[](docs/harnesses/README.md)
|
|
7
|
+
[](pyproject.toml)
|
|
11
8
|
[](LICENSE)
|
|
12
9
|
|
|
13
|
-
<p align="center">
|
|
14
|
-
<img src="docs/assets/demo.svg" alt="Skillporter Terminal Demonstration" width="860" />
|
|
15
|
-
</p>
|
|
16
|
-
|
|
17
|
-
Every AI coding and autonomous agent harness reads skills from a **different directory**:
|
|
18
|
-
|
|
19
|
-
| Harness | Project Path | Personal / Global Path | Support |
|
|
20
|
-
|---|---|---|---|
|
|
21
|
-
| **Claude Code** | `.claude/skills/` | `~/.claude/skills/` | `NATIVE` |
|
|
22
|
-
| **OpenAI Codex** | `.agents/skills/` | `~/.agents/skills/` | `NATIVE` |
|
|
23
|
-
| **Cursor** | `.agents/skills/`, `.cursor/skills/` (+2 compat) | `~/.agents/skills/`, `~/.cursor/skills/` | `NATIVE` |
|
|
24
|
-
| **GitHub Copilot** | `.github/skills/`, `.agents/skills/` (+1 compat) | `~/.copilot/skills/`, `~/.agents/skills/` | `NATIVE` |
|
|
25
|
-
| **Gemini CLI** | `.agents/skills/`, `.gemini/skills/` | `~/.agents/skills/`, `~/.gemini/skills/` | `NATIVE` |
|
|
26
|
-
| **Google Antigravity** | `.agents/skills/` (+1 compat) | `~/.gemini/config/skills/` | `NATIVE` |
|
|
27
|
-
| **Windsurf** | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` | `NATIVE` |
|
|
28
|
-
| **Cline** | `.cline/skills/`, `.clinerules/skills/` (+2 compat) | `~/.cline/skills/` | `NATIVE` |
|
|
29
|
-
| **Roo Code** | `.roo/skills/`, `.agents/skills/` | `~/.roo/skills/`, `~/.agents/skills/` | `NATIVE` |
|
|
30
|
-
| **OpenCode** | `.opencode/skills/`, `.agents/skills/` (+1 compat) | `~/.config/opencode/skills/` (+2 compat) | `NATIVE` |
|
|
31
|
-
| **Zed** | `.agents/skills/` | `~/.agents/skills/` | `NATIVE` |
|
|
32
|
-
| **Replit Agent** | `.agents/skills/`, `.claude/skills/` | `~/.config/agents/skills/` | `NATIVE` |
|
|
33
|
-
| **JetBrains Junie** | `.junie/skills/`, `.agents/skills/` | `~/.junie/skills/`, `~/.agents/skills/` | `NATIVE` |
|
|
34
|
-
| **Hermes Agent** | `.hermes/skills/` | `$HERMES_HOME/skills/<category>/<name>` | `NATIVE` |
|
|
35
|
-
| **OpenClaw** | `.openclaw/skills/`, `skills/`, `.agents/skills/` | `~/.openclaw/skills/`, `~/.agents/skills/` | `NATIVE` |
|
|
36
|
-
| **OpenHands** | `.agents/skills/`, `.openhands/skills/` | `~/.agents/skills/`, `~/.openhands/skills/` | `NATIVE` |
|
|
37
|
-
| **Goose** | `.agents/skills/`, `.goose/skills/` | `~/.agents/skills/`, `~/.config/goose/skills/` | `NATIVE` |
|
|
38
|
-
| **Continue** | `.continue/skills/` (`.continue/rules/` adapted) | `~/.continue/skills/` | `COMPATIBLE` |
|
|
39
|
-
| **Aider / AiderDesk** | `.aider-desk/skills/` (`CONVENTIONS.md` adapted) | `~/.aider-desk/skills/` | `ADAPTED` |
|
|
40
|
-
|
|
41
|
-
A skill authored for Claude Code in `.claude/skills/` is silently invisible to OpenAI Codex, Gemini CLI, Zed, and Windsurf. Hand-rolled symlinks break in Docker build contexts, `git worktree`, and Windows checkouts — while manual copies silently drift out of sync.
|
|
42
|
-
|
|
43
|
-
**Skillporter solves the entire lifecycle:** one command resolves skills from GitHub or local paths, runs a static security and supply-chain scan, deduplicates shared destinations (`.agents/skills`), tracks ownership and SHA-256 content hashes, detects content drift across copies, and supports deterministic lockfiles (`skillporter.lock`) and transactional rollback.
|
|
44
|
-
|
|
45
10
|
---
|
|
46
11
|
|
|
47
|
-
##
|
|
12
|
+
## 1. What Is Skillporter?
|
|
48
13
|
|
|
49
|
-
|
|
50
|
-
# 1. Run immediately via uvx from PyPI (zero install)
|
|
51
|
-
uvx skillporter diagnose .
|
|
14
|
+
Skillporter is a lightweight, zero-runtime-dependency CLI and Model Context Protocol (MCP) server that installs, synchronizes, pins, audits, and rolls back `SKILL.md` packages across 19 AI coding and autonomous agent harnesses.
|
|
52
15
|
|
|
53
|
-
|
|
54
|
-
uv tool install skillporter
|
|
55
|
-
pipx install skillporter
|
|
16
|
+
## 2. Why Do I Need It?
|
|
56
17
|
|
|
57
|
-
|
|
58
|
-
npx @shanmukhdheekonda/skillporter diagnose .
|
|
59
|
-
npx github:Shanmukh-l33t/skillporter diagnose .
|
|
18
|
+
Every AI agent harness reads skills from a different directory (`.claude/skills/`, `.agents/skills/`, `.github/skills/`, `.windsurf/skills/`, `$HERMES_HOME/skills/`, `~/.openclaw/skills/`).
|
|
60
19
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
20
|
+
- A skill placed in `.claude/skills/` is invisible to OpenAI Codex, Gemini CLI, Zed, and Windsurf.
|
|
21
|
+
- Hand-rolled symlinks break inside Docker builds, CI checkouts, `git worktree`, and Windows checkouts.
|
|
22
|
+
- Manual copies across directories silently drift out of sync across teammates, while naive removals from shared `.agents/skills/` directories break other agents.
|
|
23
|
+
|
|
24
|
+
## 3. What Does It Protect Me From?
|
|
25
|
+
|
|
26
|
+
Agent skills are untrusted supply-chain packages: agents load `SKILL.md` directly into system context and execute bundled scripts. Skillporter helps defend against:
|
|
64
27
|
|
|
65
|
-
|
|
28
|
+
- **Silent skill drift and unpinned upstream changes**: `skillporter.lock` pins resolved Git commits, SHA-256 tree digests, and per-file hashes, blocking unexpected upstream mutations during `sync`.
|
|
29
|
+
- **Known static supply-chain hazards**: Inspects Python ASTs, JavaScript/TypeScript scripts, Markdown instructions, and bounded Base64/Hex/PowerShell payloads for embedded credentials, prompt-injection override patterns, hidden Unicode/comments, shell-pipe RCE, unsafe deserialization, symlink escapes, and multi-file staged execution before installation.
|
|
30
|
+
- **Unsafe archive & filesystem operations**: Blocks Zip-Slip/Tar-Slip (`../`, `..\`, drive paths, Windows reserved device names, Unicode NFC/NFD collisions, symlinks, special files, decompression bombs) and stages installs transactionally with crash-recovery journals.
|
|
31
|
+
- **Unscoped agent filesystem writes**: Constrains `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`).
|
|
66
32
|
|
|
67
|
-
|
|
33
|
+
> **Important Security Note**: Static scanning (`STATIC_SECURITY_ASSESSMENT`) inspects files for known dangerous patterns and structural anomalies. **A clean static scan does not prove or guarantee that a skill is safe at runtime.** Novel natural-language prompt injections or dynamically fetched payloads can still steer an agent at runtime.
|
|
34
|
+
|
|
35
|
+
## 4. How Do I Install It?
|
|
68
36
|
|
|
69
37
|
```bash
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
38
|
+
# Option A: Run immediately without global installation via uvx or npx
|
|
39
|
+
uvx skillporter diagnose .
|
|
40
|
+
npx @shanmukhdheekonda/skillporter diagnose .
|
|
73
41
|
|
|
74
|
-
|
|
42
|
+
# Option B: Install from PyPI with uv or pipx (PEP 668 safe)
|
|
43
|
+
uv tool install skillporter
|
|
44
|
+
pipx install skillporter
|
|
45
|
+
|
|
46
|
+
# Option C: Standalone verified release installer (Linux & macOS)
|
|
47
|
+
# Verifies SHA256SUMS.txt + GitHub OIDC provenance attestation (`gh attestation verify`)
|
|
48
|
+
# or an out-of-band pinned digest (`SKILLPORTER_SHA256=<64-hex>`). Never falls back to mutable `main`.
|
|
49
|
+
curl -fsSL https://github.com/Shanmukh-l33t/skillporter/releases/download/v3.0.0/install.sh -o install.sh
|
|
50
|
+
SKILLPORTER_VERSION=v3.0.0 sh install.sh
|
|
51
|
+
```
|
|
75
52
|
|
|
76
|
-
## 60-Second Quick Start
|
|
53
|
+
## 5. How Do I Use It? (60-Second Quick Start)
|
|
77
54
|
|
|
78
55
|
```bash
|
|
79
|
-
# 1.
|
|
80
|
-
skillporter
|
|
56
|
+
# 1. Run the zero-residue interactive demo (heals broken symlinks & SHA-256 drift in a temp dir)
|
|
57
|
+
skillporter demo
|
|
81
58
|
|
|
82
|
-
# 2. Install a skill
|
|
59
|
+
# 2. Install a skill across harnesses (validates spec, runs static security scan, deduplicates .agents/skills)
|
|
83
60
|
skillporter add anthropics/skills --skill pdf --harness all
|
|
84
61
|
|
|
85
|
-
# 3.
|
|
86
|
-
skillporter diagnose .
|
|
87
|
-
|
|
88
|
-
# 4. Run a static supply-chain security scan on any skill directory
|
|
62
|
+
# 3. Inspect & security-scan skills (text, JSON, or SARIF 2.1.0 for GitHub Code Scanning)
|
|
89
63
|
skillporter scan .
|
|
64
|
+
skillporter scan . --format sarif > skillporter.sarif
|
|
90
65
|
|
|
91
|
-
#
|
|
66
|
+
# 4. Initialize manifest, synchronize transitive dependencies, and verify reproducible lockfile in CI
|
|
92
67
|
skillporter init
|
|
93
68
|
skillporter sync
|
|
94
|
-
skillporter lock
|
|
69
|
+
skillporter lock --check
|
|
70
|
+
|
|
71
|
+
# 5. Diagnose reachability, audit provenance/override logs, or roll back to a verified snapshot
|
|
72
|
+
skillporter diagnose .
|
|
73
|
+
skillporter audit .
|
|
74
|
+
skillporter rollback pdf
|
|
95
75
|
```
|
|
96
76
|
|
|
97
77
|
---
|
|
98
78
|
|
|
99
|
-
##
|
|
100
|
-
|
|
101
|
-
Built after auditing the exact failure modes reported across upstream agent ecosystems:
|
|
79
|
+
## Core Differentiators
|
|
102
80
|
|
|
103
|
-
- **
|
|
104
|
-
- **
|
|
105
|
-
- **
|
|
106
|
-
- **
|
|
81
|
+
- **Multi-Harness Management**: Writes shared `.agents/skills/` once across 8 primary harnesses while preserving shared directories when individual harnesses are removed.
|
|
82
|
+
- **Deterministic Lockfiles (`skillporter.lock`)**: Pins `resolved_commit`, `tree_hash`, per-file SHA-256 `file_hashes`, `pin_state` (`PINNED_COMMIT` / `PINNED_CONTENT` / `UNPINNED_MUTABLE`), dependencies, and adapter version.
|
|
83
|
+
- **Reproducible Synchronization**: `skillporter sync` honors locked Git commit SHAs even when upstream branches move, and rejects unexpected upstream content changes without `--force`.
|
|
84
|
+
- **Multi-Layer Static Security Assessment**: Combines Python AST analysis, JS/TS checks, Markdown prompt/delegation inspection, bounded Base64/Hex/PowerShell decoding, cross-file chain detection, completeness tracking (`INCOMPLETE_ASSESSMENT` on truncated/unreadable files), and optional NVIDIA SkillSpector integration.
|
|
85
|
+
- **SHA-256 Drift & Duplicate Detection**: `diagnose`, `status`, and `doctor` detect diverging copies across harnesses and duplicate loading within the same harness.
|
|
86
|
+
- **Transactional Rollback & Crash Recovery**: Stages replacements in `.skillporter/tmp/txn-*` with a write-ahead `journal.json` and snapshots prior versions in `.skillporter/backups/` for atomic `skillporter rollback`.
|
|
107
87
|
|
|
108
88
|
---
|
|
109
89
|
|
|
110
|
-
##
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
### 4. Manifest (`skillporter.yaml`), Lockfile (`skillporter.lock`) & Rollback
|
|
136
|
-
Declare your project's skills in `skillporter.yaml`:
|
|
137
|
-
|
|
138
|
-
```yaml
|
|
139
|
-
schema_version: 1
|
|
140
|
-
project: acme-platform
|
|
141
|
-
scope: project
|
|
142
|
-
strategy: copy
|
|
143
|
-
security_policy: HIGH
|
|
144
|
-
harnesses:
|
|
145
|
-
- claude-code
|
|
146
|
-
- codex
|
|
147
|
-
- cursor
|
|
148
|
-
- github-copilot
|
|
149
|
-
skills:
|
|
150
|
-
- name: skillporter
|
|
151
|
-
source: Shanmukh-l33t/skillporter/skills/skillporter
|
|
152
|
-
ref: main
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
Run `skillporter sync` to reconcile the workspace, `skillporter lock` to pin exact git commits and SHA-256 tree hashes in `skillporter.lock`, and `skillporter rollback <skill>` to restore the previous snapshot from `.skillporter/backups/` if an update introduces a regression.
|
|
90
|
+
## Harness Compatibility & Verification Matrix (19 Harnesses)
|
|
91
|
+
|
|
92
|
+
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 tested against a live harness runtime.
|
|
93
|
+
|
|
94
|
+
| Harness | Project Path | User / Global Path | Support | Verification Evidence |
|
|
95
|
+
|---|---|---|---|---|
|
|
96
|
+
| **Hermes Agent** | `.hermes/skills/` | `$HERMES_HOME/skills/<cat>/<name>` | `NATIVE` | `RUNTIME_VERIFIED` |
|
|
97
|
+
| **Claude Code** | `.claude/skills/` | `~/.claude/skills/` | `NATIVE` | `INTEGRATION_TESTED` |
|
|
98
|
+
| **OpenAI Codex** | `.agents/skills/` | `~/.agents/skills/` | `NATIVE` | `INTEGRATION_TESTED` |
|
|
99
|
+
| **Cursor** | `.agents/skills/`, `.cursor/skills/` (+2 compat) | `~/.agents/skills/`, `~/.cursor/skills/` | `NATIVE` | `INTEGRATION_TESTED` |
|
|
100
|
+
| **GitHub Copilot** | `.github/skills/` (+2 compat) | `~/.copilot/skills/` (+1 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
101
|
+
| **Gemini CLI** | `.agents/skills/`, `.gemini/skills/` | `~/.agents/skills/`, `~/.gemini/skills/` | `NATIVE` | `FIXTURE_TESTED` |
|
|
102
|
+
| **Google Antigravity** | `.agents/skills/` (+1 compat) | `~/.gemini/config/skills/` | `NATIVE` | `FIXTURE_TESTED` |
|
|
103
|
+
| **Windsurf** | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` | `NATIVE` | `FIXTURE_TESTED` |
|
|
104
|
+
| **Cline** | `.cline/skills/` (+3 compat) | `~/.cline/skills/` | `NATIVE` | `FIXTURE_TESTED` |
|
|
105
|
+
| **Roo Code** | `.roo/skills/` (+1 compat) | `~/.roo/skills/` (+1 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
106
|
+
| **OpenCode** | `.opencode/skills/` (+2 compat) | `~/.config/opencode/skills/` (+2 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
107
|
+
| **Zed** | `.agents/skills/` | `~/.agents/skills/` | `NATIVE` | `FIXTURE_TESTED` |
|
|
108
|
+
| **Replit Agent** | `.agents/skills/` (+1 compat) | `~/.config/agents/skills/` | `NATIVE` | `FIXTURE_TESTED` |
|
|
109
|
+
| **JetBrains Junie** | `.junie/skills/` (+1 compat) | `~/.junie/skills/` (+1 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
110
|
+
| **OpenClaw** | `.openclaw/skills/` (+2 compat) | `~/.openclaw/skills/` (+1 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
111
|
+
| **OpenHands** | `.agents/skills/` (+2 compat) | `~/.agents/skills/` (+1 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
112
|
+
| **Goose** | `.agents/skills/` (+1 compat) | `~/.agents/skills/` (+1 compat) | `NATIVE` | `FIXTURE_TESTED` |
|
|
113
|
+
| **Continue** | `.continue/skills/` (`.continue/rules/` adapted) | `~/.continue/skills/` | `COMPATIBLE` | `FIXTURE_TESTED` |
|
|
114
|
+
| **Aider / AiderDesk** | `.aider-desk/skills/` (`CONVENTIONS.md` adapted) | `~/.aider-desk/skills/` | `ADAPTED` | `FIXTURE_TESTED` |
|
|
156
115
|
|
|
157
116
|
---
|
|
158
117
|
|
|
@@ -160,72 +119,28 @@ Run `skillporter sync` to reconcile the workspace, `skillporter lock` to pin exa
|
|
|
160
119
|
|
|
161
120
|
| Command | Description |
|
|
162
121
|
|---|---|
|
|
163
|
-
| `skillporter add <source>` | Resolve, validate, security-scan, and install skills
|
|
122
|
+
| `skillporter add <source>` | Resolve, validate, security-scan, and install skills (`--dry-run`, `--allow-risky`, `--force`, `--json`) |
|
|
123
|
+
| `skillporter install <dir>` | Security-scan and install a local skill directory (`--dry-run`, `--allow-risky`, `--force`, `--json`) |
|
|
124
|
+
| `skillporter remove <skill>` | Safely remove a skill while preserving shared `.agents/skills/` still owned by other harnesses (`--dry-run`, `--json`) |
|
|
125
|
+
| `skillporter sync [path]` | Resolve pinned/transitive dependencies, verify lockfile hashes, and synchronize harnesses (`--dry-run`, `--json`) |
|
|
126
|
+
| `skillporter lock [path] [--check]` | Write or CI-verify (`--check`) deterministic `skillporter.lock` |
|
|
127
|
+
| `skillporter scan [path]` | Run static security & supply-chain assessment (`--format text\|json\|sarif`, `--max-risk-score`) |
|
|
128
|
+
| `skillporter audit [path]` | Inspect installed skill origins, security posture, lockfile drift, and `.skillporter/audit.jsonl` events |
|
|
164
129
|
| `skillporter diagnose [path]` | Check reachability, broken symlinks, SHA-256 content drift, duplicates, and spec compliance |
|
|
165
|
-
| `skillporter doctor [path] [--fix]` |
|
|
166
|
-
| `skillporter
|
|
167
|
-
| `skillporter
|
|
168
|
-
| `skillporter
|
|
169
|
-
| `skillporter
|
|
170
|
-
| `skillporter
|
|
171
|
-
| `skillporter
|
|
172
|
-
| `skillporter
|
|
173
|
-
| `skillporter
|
|
174
|
-
| `skillporter
|
|
175
|
-
| `skillporter
|
|
176
|
-
| `skillporter
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
| `skillporter mcp` | Start the zero-dependency stdio JSON-RPC 2.0 MCP server |
|
|
183
|
-
|
|
184
|
-
### Exit Codes (CI Contract)
|
|
185
|
-
- `0` — Clean / all checks passed
|
|
186
|
-
- `1` — Findings detected (missing reachability, content drift, broken symlink, spec error, or security policy block)
|
|
187
|
-
- `2` — Usage or runtime error (invalid path, unknown harness, unsafe overwrite refusal)
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## GitHub Action Integration
|
|
192
|
-
|
|
193
|
-
Validate `SKILL.md` compliance, scan for security risks, and verify harness reachability automatically on every pull request:
|
|
194
|
-
|
|
195
|
-
```yaml
|
|
196
|
-
name: Skillporter Check
|
|
197
|
-
on: [push, pull_request]
|
|
198
|
-
jobs:
|
|
199
|
-
skills:
|
|
200
|
-
runs-on: ubuntu-latest
|
|
201
|
-
steps:
|
|
202
|
-
- uses: actions/checkout@v4
|
|
203
|
-
- uses: Shanmukh-l33t/skillporter@v2
|
|
204
|
-
with:
|
|
205
|
-
command: validate
|
|
206
|
-
path: .
|
|
207
|
-
run-security-scan: "true"
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Documentation
|
|
213
|
-
|
|
214
|
-
- [Getting Started](docs/getting-started/README.md)
|
|
215
|
-
- [Installation & Distribution (uvx, npx, binaries, MCP)](docs/installation/README.md)
|
|
216
|
-
- [Supported Harnesses & Evidence Directory (19 Harnesses)](docs/harnesses/README.md)
|
|
217
|
-
- [CLI Command Reference](docs/commands/README.md)
|
|
218
|
-
- [Configuration (`skillporter.yaml` & `skillporter.lock`)](docs/configuration/README.md)
|
|
219
|
-
- [Security & Supply-Chain Model](docs/security/README.md)
|
|
220
|
-
- [System Architecture](ARCHITECTURE.md)
|
|
221
|
-
- [Adapter Development SDK](docs/adapters/README.md)
|
|
222
|
-
- [Registry & Immutable Packaging](docs/registry/README.md)
|
|
223
|
-
- [Troubleshooting](docs/troubleshooting/README.md)
|
|
224
|
-
- [Contributing Guide](CONTRIBUTING.md)
|
|
225
|
-
- [Product Roadmap](ROADMAP.md)
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
## License
|
|
230
|
-
|
|
231
|
-
MIT — see [LICENSE](LICENSE).
|
|
130
|
+
| `skillporter doctor [path] [--fix]` | Comprehensive workspace health check and tamper-safe repair (`--dry-run`, `--json`) |
|
|
131
|
+
| `skillporter status [path]` | Unified workspace manifest, lockfile, per-harness installed/locked state, and drift summary |
|
|
132
|
+
| `skillporter update [skill]` | Fetch, security-gate, backup, and update tracked skills (`--dry-run`, `--allow-risky`, `--json`) |
|
|
133
|
+
| `skillporter rollback <skill>` | Atomically restore a skill (and dependency graph) from SHA-256-verified `.skillporter/backups/` (`--dry-run`, `--json`) |
|
|
134
|
+
| `skillporter validate [path]` | Validate `SKILL.md` against the Agent Skills specification (`--format text\|json\|sarif`) |
|
|
135
|
+
| `skillporter inspect <source>` | Inspect local/remote package structure, security posture, and adapted rule previews |
|
|
136
|
+
| `skillporter graph [path]` | Render or export (`--json`) topological skill dependency graph |
|
|
137
|
+
| `skillporter sandbox run <skill>` | **[Experimental]** Opt-in non-mutating dry-run behavioral trace |
|
|
138
|
+
| `skillporter explain <finding>` | Explain any diagnostic, lockfile, validation, or `sec-*` finding code with remediation commands |
|
|
139
|
+
| `skillporter search / info / pack / publish` | Search catalog, inspect metadata, build deterministic `.tar.gz` + `provenance.json`, or publish |
|
|
140
|
+
| `skillporter detect / matrix / demo` | Detect installed harnesses, print 19-harness matrix, or run zero-residue demo |
|
|
141
|
+
| `skillporter mcp` | Run hardened JSON-RPC 2.0 MCP server (read-only by default; `--allow-writes` opt-in) |
|
|
142
|
+
|
|
143
|
+
### Exit Codes
|
|
144
|
+
- `0`: Clean / operation succeeded
|
|
145
|
+
- `1`: Policy or diagnostic finding (drift, broken symlink, spec error, security block, lockfile mismatch, cycle/conflict)
|
|
146
|
+
- `2`: Usage or runtime error (invalid argument, unknown harness, missing path)
|
package/npm/bin/skillporter.pyz
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shanmukhdheekonda/skillporter",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "AI agent skill manager for multi-agent skill synchronization, skill lifecycle management, and deterministic skill lockfile security across 19+ harnesses.",
|
|
5
5
|
"keywords": [
|
|
6
|
+
"ai-agent-skill-manager",
|
|
7
|
+
"multi-agent-skill-synchronization",
|
|
8
|
+
"skill-lifecycle-management",
|
|
9
|
+
"skill-lockfile",
|
|
6
10
|
"agent-skills",
|
|
7
11
|
"ai-agents",
|
|
8
12
|
"claude-code",
|