← Back to home@PerryLink

dsh-plugin-certification

Community certification spec and registry for DeepSeek Harness plugins: five machine-checkable dimensions, A-D grades, and a security veto.

Stars
0
Language
JavaScript
Created
Aug 29, 2026
Updated
Sep 18, 2026

Introduction

dsh-plugin-certification

Community certification for DeepSeek Harness plugins: a public spec, a machine-checkable scoring model, and an independent registry with badges. This project exists because the ecosystem's canonical list explicitly says it is "not a judge of plugin quality" and "listing is not a security review" — someone outside the listings should run that check, reproducibly, without claiming authority over them.

This is a data repository, not a plugin. It ships no Cordis plugin, nothing here is installable, and nothing is published to npm: package.json is private and exists only so ecosystem tooling can read the metadata (dsh.manifestVersion, engines.dsh — the same three-clause range that dsh-plugin-kit/data/peer-range.json records as canonical, quoted verbatim rather than re-typed).

The five dimensions

DimensionEvidence sourceChecks
A. Manifest complianceStaticdsh.bundle manifest, LICENSE (SPDX), keywords/topics alignment, five-language READMEs, engines
B. Build hygieneStaticfiles allowlist completeness, dependency declarations (peer/optional), no malicious postinstall patterns, lint/typecheck gates present
C. Supply chainOpenSSF ScorecardThe 18 upstream checks, via the official Scorecard API and badges
D. Release integritynpm provenanceSLSA attestation verifiable with npm audit signatures
E. Install smokedsh-test-drive recordsReal install/load/keyless boot in an isolated throwaway profile (four states: ok / load-fail / install-fail / skip)

Grades

  • A — all five pass (E must be ok), no veto hit
  • B — E passes and at least three of A/B/C/D pass
  • C — E passes, the rest incomplete
  • D — any hard gate fails (dsh.bundle missing, no license, malicious pattern hit)
  • Security veto — obfuscated code, credential exfiltration, or surprising install-time behavior grades D immediately, with the reason published
  • Environment-blocked E — when E ends install-fail purely because of an unattended-environment gate (e.g. pnpm's interactive approve-builds cannot be confirmed in a sandbox), the entry keeps grade B (if A–D pass) and records environment-blocked with the reproduction command. Environmental gates are never recorded as D.

Evidence discipline (load-bearing)

Every score must come from real, reproducible execution — a probe result, a Scorecard run, a provenance check, or a test-drive record. Absent evidence is no-evidence, never a guess. Every dimension records audit links with a snapshot date.

Registry and badges

  • data/certified.json — the registry: one record per certified repository (dimension results + evidence links + spec version). CI re-renders the badges from it on a daily cron (.github/workflows/registry.yml); the registry entries themselves are human curation, not CI output.

  • Badge artifacts are the committed SVGs under badges/, generated by scripts/badge.mjs from the registry (the registry is the only source of truth; the script never invents a grade).

  • Working badge URL (artifact filename uses a double underscore <owner>__<repo>):

    https://raw.githubusercontent.com/PerryLink/dsh-plugin-certification/main/badges/<owner>__<repo>.svg
    

    Paste-able:

    [![dsh-certified](https://raw.githubusercontent.com/PerryLink/dsh-plugin-certification/main/badges/<owner>__<repo>.svg)](https://github.com/PerryLink/dsh-plugin-certification#registry-and-badges)
    
  • ⚠️ The https://perrylink.github.io/dsh-plugin-certification/badge/<owner>/<repo>.svg form was documented before v0.2 but returned 404: this repository has never had a GitHub Pages deployment (registry.yml only renders and commits SVGs). Do not advertise that URL until a Pages deploy actually exists; either use the raw form above, or enable Pages and publish badges/<owner>__<repo>.svg at badge/<owner>/<repo>.svg.

  • Grades: A / B / C / D, plus a gray no-data for anything not in the registry.

  • Lists and marketplaces link the badge only — their "no endorsement" stance is unchanged.

Checks

node scripts/check-freshness.mjs is the gate for this repository (node: builtins only, zero dependencies) and runs on every push, on every pull request, and weekly:

  • freshness — the registry generatedAt and every entry snapshot must be at most 30 days old. Stale certification evidence fails the build rather than quietly describing a plugin as it was a month ago.
  • mirror — the read-only copy served by dsh-cert-mcp must carry the same registry content as data/certified.json, so the live MCP URL can never serve grades this repository no longer stands behind. The comparison runs over LF-normalised text, because the two repositories are separate clones with their own core.autocrlf and a raw-byte comparison would report drift that does not exist. When the sibling repository is absent the check reports SKIP — an explicit "nothing compared", never a pass.
  • markers — the two roadmap counts above are asserted against their sources, so the prose cannot drift away from the roster.

DSH_CERT_MIRROR and DSH_KIT_ROSTER override the sibling paths. .github/workflows/checks.yml (read-only, contents: read) checks dsh-cert-mcp and dsh-plugin-kit out into _siblings/ and passes them through those switches, so all three assertions run on every push and pull request plus weekly — and the same switches are how the staleness, drift, malformed-JSON and absent-source cases are exercised locally. The scheduled registry.yml (which needs contents: write to commit badges) runs only the freshness assertion, since that job checks out nothing else.

Relationship to existing tools

  • dsh-test-drive supplies dimension E records (already-open test_drive domain)
  • dsh-score consumes certification records as install evidence
  • dsh-skill-pack-security supplies the malicious-pattern vetting for dimension B
  • OpenSSF Scorecard supplies dimension C wholesale — this project does not reinvent it
  • Overlap with dsh-plugin-scorecard, dsh-plugin-audit, and friends: governance discussion is open in issue #1; the goal is one agreed standard, not a twenty-first scorer

Roadmap

  1. Publish spec v1 (this document)
  2. Registry + badge CI
  3. Certify the PerryLink plugin family as the first baseline batch: 33 plugin repos in the family roster and 1 certified so far. Both counts are derived, not hand-typed — scripts/check-freshness.mjs asserts them against dsh-plugin-kit/data/repos.json (the roster, updatedAt 2026-08-26, which does not yet list repos added after that date) and against this registry.
  4. Pilot with other top plugin authors
  5. Propose badge display to the canonical list and marketplaces (link-only, no endorsement)

PerryLink DSH Plugin Family

This project is one of the 40 DeepSeek Harness plugins maintained by PerryLink. If this one helps you, the others likely will too:

PluginOne-liner
dsh-auto-reviewSecond-model auto-review on the approval chain, fail-closed by default
dsh-autotierAutomatic strong/cheap model-tier routing with deterministic risk guards and a /tier command
dsh-background-agentsDurable background child agents with a Web UI sidebar, messaging and interrupt
dsh-budgetCost governance for DeepSeek Harness: budgets, carbon, and latency in one panel.
dsh-catalogDSH Desktop Market standard catalog source for the PerryLink family
dsh-cert-mcpRead-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence
dsh-checkpoint-rewindUnified session + workspace + config checkpoints with one-shot /rewind
dsh-claude-moveMigrate Claude Code, Codex, OpenCode and Hermes sessions, memories and skills into DSH
dsh-clickCross-platform native desktop control for DeepSeek Harness — Windows first.
dsh-composer-historyTerminal-style input history for the web composer: arrows, Ctrl+R search
dsh-data-qualityDeterministic dataset profiling, cleaning and citation verification
dsh-defendPrompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness.
dsh-doublecheckEngineering-discipline guard: requirements grill, test gates, adversary review
dsh-drawUnified static-image generation routing for DeepSeek Harness.
dsh-fastRead-only performance diagnostics: load, spill, compaction and cache hit rate
dsh-fund-researchChinese mutual-fund research with sealed, traceable source snapshots
dsh-githubGitHub PR/issue/CI integration with every write approval-gated
dsh-industry-researchIndustry and company research pack: chain map, policy timeline, company cards
dsh-kitOne-command starter pack that installs the core family
dsh-libraryLocal document knowledge base with hybrid search and citation-aware injection
dsh-local-aiLocal Ollama model discovery and task-based routing with cloud fallback
dsh-lsp-actionsLSP diagnostics, formatting, completion, code actions, symbols and rename
dsh-maskPII masking at the model boundary with a host-side restore table
dsh-mcp-panelMCP management console: /mcp command, Settings tab and trial calls
dsh-mementoApproval-gated cross-session memory protocol (ctx.memory + SQLite)
dsh-observeOpenTelemetry and Langfuse telemetry export from the session event stream
dsh-output-stylesRuntime-switchable model output styles
dsh-permission-rulesDeclarative allow/deny/ask rules plus a process-level network policy
dsh-plugin-doctorZero-dependency static + sandbox smoke detector for DSH plugins
dsh-plugin-guidePlugin-dev knowledge base, agent skill and the dsh-plugin-dev CLI toolchain
dsh-plugin-kitShared zero-runtime-dependency toolkit for the PerryLink DSH plugins
dsh-plugin-portalZero-dependency static portal rendering the whole plugin family as one page
dsh-plugin-upgrade-015Merged 0.1.3-alpha.1 → 0.1.5-rc.1 upgrade corridor card plus a zero-dependency seam scanner
dsh-reachMulti-channel approval/question bridge: WeChat, Telegram, Feishu + a session console
dsh-research-reportVerifiable research reports: evidence ledger, manifest seal, per-claim verdicts
dsh-scoreMulti-dimensional plugin quality scoring with an evidence-backed leaderboard
dsh-session-pinPin sessions and workspaces in the Web sidebar with per-pin colors
dsh-session-syncGit-backed cross-device session synchronization with keep-both merges
dsh-skill-pack-securitySecurity-audit skill pack plus the plugin_vet supply-chain gate
dsh-talkVoice-first session loop: speech-to-text input and text-to-speech replies
dsh-team-roomsCross-session team rooms: shared message bus, task board and timeline
dsh-test-driveIsolated install-and-smoke test drives with a pass/fail matrix
dsh-ticktickTickTick/Dida365 task bridge: session-header panel plus eleven agent tools
dsh-translateVendor parameter translation and deterministic JSON repair
dsh-wechatWeChat ↔ DSH bridge (Tencent iLink bot) developed with pan17, who hosts the repo

License

MIT. See LICENSE.