Atlas / MCP servers / noteflowai / dsh-skills-anywhere

dsh-skills-anywhereCAUTION

mcp/noteflowai/dsh-skills-anywhere

Check Agent Skills before reuse: find missing local resources in browser or CI, review pinned examples, and serve skills through DeepSeek Harness or MCP.

Verdict
CAUTION
Grade
B
Trust score
84 /100
Exposed tools
9 9r · 0w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
6
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Product direction and acceptance milestones: Roadmap.

Discover and load skills across your tools. Collect Agent Skills from local directories and configured Git sources into one catalog, available through a live DeepSeek Harness (dsh) provider or a local stdio MCP server.

English | 中文

[](https://github.com/noteflowai/dsh-skills-anywhere/actions/workflows/ci.yml) [](https://www.npmjs.com/package/dsh-skills-anywhere) [](https://github.com/topics/dsh-plugin) [](https://scorecard.dev/viewer/?uri=github.com/noteflowai/dsh-skills-anywhere) [](https://glama.ai/mcp/servers/noteflowai/dsh-skills-anywhere) [](LICENSE)

Check a skill before moving it

Find missing supporting files in the installed folder, then review bundle changes before loading it through MCP. Browser folder check · Three pinned public examples.

npx [email protected] check path/to/SKILL.md --resources --json

Add --fail-on-resource-issues to gate CI. This checks local Markdown link targets; it does not inspect prose dependencies or execute the skill. Scope and tutorial.

First review, no clone required — Find one missing skill reference, restore it, and verify the CI gate.

Read from source at commit a8752d47b046OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (npm)
claude mcp add dsh-skills-anywhere -- npx -y [email protected] mcp
03

Exposed tools (9)

9 read · 0 write · 0 destructive.

ToolRiskDescription
author-offreadd
budget-hiddenreadd
enabledreadd
find_skillsread
hidden-and-author-offreadd
incident-summaryreadDescribe observed facts.
list_skillsread
narrowread
open_skillread
04

Trust audit

CAUTIONgrade B · trust 84/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (6 observation(s))
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (18)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
examples/behavior-lab/skills/submit-order-cache/SKILL.md:13
`http://127.0.0.1:8765/audit`, with `Content-Type: application/json`.
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
huggingface/check.cjs:25
const origin = `http://127.0.0.1:${server.address().port}`
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/frontmatter.ts:23
const FRONTMATTER_OPEN = /^?---[ \t]*\r?\n/
LOWInventory / provenance · inv.hidden_file · CWE-1104
.oxlintrc.json
.oxlintrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
huggingface/publish.py:135
hashlib.sha1(b"blob " + str(len(data)).encode() + b"\0" + data, usedforsecurity=False).hexdigest())
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/discover.ts:444
contentHash: createHash('sha1').update(parsed.skill.content).digest('hex'),
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/sources.ts:190
return createHash('sha1').update(input).digest('hex').slice(0, 12)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
examples/skill-impact/bridge.mjs:14
import { createSkillsAnywhereServer, findModelSkills, modelSkills, openSkill, runStdio } from '../../lib/mcp.js'
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/sources.test.ts:82
expect(() => resolveSource({ repo: 'o/r', path: '../../etc' }, CACHE)).toThrow(/escapes/)
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/sources.test.ts:92
for (const hostile of ['github:../..', 'https://github.com/../..', 'https://x/../../../..', 'git@h:../../..', 'o/./r', 'o\\r/x']) {
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/web.test.ts:69
const response = await route.fetch(new Request(`http://127.0.0.1${path}`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(body) }))
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
tests/frontmatter.test.ts:36
const split = splitFrontmatter('---\r\nname: x\r\n---\r\nbody\r\n')
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
examples/resource-portability/snapshots/anthropic-mcp-builder/scripts/requirements.txt
anthropic, mcp
Why it matters. 2 requirement(s) not pinned with ==
Fix. pin exact versions
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
chokidar, mdast-util-from-markdown, yaml, zod, @deepseek-ai/cordis, @deepseek-ai/schemastery, @types/mdast, @types/node
Why it matters. 17 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
examples/funes-handoff/README.md:53
the native server must report exactly one session and return its original
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
examples/resource-portability/snapshots/cloudflare-security-audit/CLIENT-SIDE.md:39
The server reflects or weakly matches `Origin` while allowing credentials and returns sensitive responses. A bare wildcard with credentials is rejected by browsers; report only the actual reflected/al
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
huggingface/index.html:177
<p>Use the <a href="https://github.com/noteflowai/dsh-skills-anywhere/tree/main/examples/funes-handoff">Funes MCP source example</a> to expose one reviewed public session. The separate <a href="https:
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
examples/resource-portability/snapshots/cloudflare-security-audit/ATTACK-CLASSES.md:122
- Are CORS headers set to `*` or overly permissive? Is `Access-Control-Allow-Credentials` combined with a wildcard origin?
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha a8752d47b046full audit observations/trust-audit/mcp-server/noteflowai__dsh-skills-anywhere.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-10a8752d47b046CAUTIONB84first audit
06

Questions

What is the dsh-skills-anywhere MCP server?

Check Agent Skills before reuse: find missing local resources in browser or CI, review pinned examples, and serve skills through DeepSeek Harness or MCP.

What tools does dsh-skills-anywhere expose?

9 in total: 9 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is dsh-skills-anywhere safe to connect to an agent?

With care. The audit graded it B (84/100) and found 18 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does dsh-skills-anywhere need?

No credential environment variables were found in its source, so it appears to need none.

How does dsh-skills-anywhere run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as dsh-skills-anywhere at 0.19.0.

How current is this page?

The grade is for one exact copy of the source (a8752d47b046), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement