@rhize/skill-forge 0.6.0 → 0.6.1
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 +10 -3
- package/dist/cli.js +177 -214
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -161,13 +161,15 @@ guessing between the two).
|
|
|
161
161
|
|---|---|---|
|
|
162
162
|
| Local directory | `./my-mcp-server` | Copied into quarantine, same as a local skill source. |
|
|
163
163
|
| Git URL | `https://github.com/owner/mcp-server.git` | Shallow-cloned into quarantine, same as a git skill source. |
|
|
164
|
-
| npm package | `@scope/name` or `some-mcp-server` | `npm pack <name> --pack-destination <quarantine>`, then tarball **extraction only** — never `npm install`, never lifecycle scripts. |
|
|
164
|
+
| npm package | `@scope/name` or `some-mcp-server` | `npm pack <name> --ignore-scripts --pack-destination <quarantine>`, then tarball **extraction only** — never `npm install`, never lifecycle scripts. Every tarball member path is validated (absolute paths and `..` segments are rejected) before extraction. |
|
|
165
165
|
|
|
166
166
|
**What's gated**
|
|
167
167
|
|
|
168
168
|
Safety runs the same built-in deny-pattern ruleset used for skills (curl\|bash, credential-file
|
|
169
|
-
access, etc.) plus MCP-specific rules: inline credential values in config/env
|
|
170
|
-
|
|
169
|
+
access, etc.) plus MCP-specific rules: inline credential values in config/env (quoted or
|
|
170
|
+
unquoted), unpinned `npx -y` launch commands (a moving/dist tag like `@latest` counts as
|
|
171
|
+
unpinned, and `npx` is recognized by basename so a full path or `npx.cmd` can't evade it),
|
|
172
|
+
`--dangerously-*`/`--no-sandbox` flags, and filesystem-root launch args — see the
|
|
171
173
|
[MCP safety ruleset table](docs/gate-policy.md#mcp-safety-ruleset). Overlap analysis (Pro, free
|
|
172
174
|
during the 0.x beta) ranks the candidate against the server entries already present in your
|
|
173
175
|
configured `mcpTargets` files, instead of against a skills root.
|
|
@@ -266,6 +268,11 @@ implementation status.
|
|
|
266
268
|
- **Block on HIGH/CRITICAL.** Any finding at `HIGH` or `CRITICAL` severity blocks the candidate
|
|
267
269
|
outright (verdict `block`); a lower-severity finding produces `warn`; a clean scan is `pass`.
|
|
268
270
|
`--yes` honors this: `block` is rejected automatically.
|
|
271
|
+
- **npm-sourced MCP candidates: `--ignore-scripts` + tarball member validation.** An npm-package
|
|
272
|
+
MCP source is fetched with `npm pack --ignore-scripts`, and the tarball's member list is checked
|
|
273
|
+
with `tar -tzf` before extraction — any absolute path or `..` path segment refuses the extract
|
|
274
|
+
with an error instead of running `tar -xzf` (a path-traversal guard against a malicious tarball
|
|
275
|
+
writing outside the quarantine sandbox).
|
|
269
276
|
- **SkillSpector, when installed.** If [SkillSpector](https://github.com/NVIDIA/SkillSpector)
|
|
270
277
|
(Apache-2.0) is on `PATH`, skill-forge shells out to it (`--no-llm` by default, so scanned skill
|
|
271
278
|
content is never sent to an external LLM provider) and merges its findings into the same report.
|