← 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
Oct 7, 2026

Introduction

dsh-plugin-certification

dshfind

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: 41 plugin repos in the family roster — 32 actively maintained, 6 frozen and 3 retired, which is every entry whose role is not infra — and 1 certified so far. Both counts are derived, not hand-typed — scripts/check-freshness.mjs asserts them, and the bold numbers in this sentence, against dsh-plugin-kit/data/repos.json (the roster, updatedAt 2026-10-07) 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)

DSH family line: this repository belongs to the PerryLink DeepSeek Harness plugin family, whose current line is dsh-v0.1.7-rc.2.

PerryLink DSH Plugin Family

This project is one of the 33 actively maintained DeepSeek Harness plugins from PerryLink — the roster is 42, of which 6 are frozen and 3 retired; every one keeps its row below, with the reason in the Status column. If this one helps you, the others likely will too:

PluginOne-linerStatus
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🚫 RETIRED — see the note above
dsh-budgetCost governance for DeepSeek Harness: budgets, carbon, and latency in one panel.🧊 FROZEN — see the repo README
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-rewindClaude Code /rewind-equivalent: snapshots, session forks, one-shot restore
dsh-claude-moveMigrate Claude Code sessions, memory, skills and CLAUDE.md into DSH🧊 FROZEN — see the repo README
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-qualityDataset quality checks and citation cross-checks (the optional numeric bridge consumed here)
dsh-defendPrompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness.🧊 FROZEN — see the repo README
dsh-doublecheckEngineering-discipline guard: requirements grill, test gates, adversary review
dsh-drawUnified static-image generation routing for DeepSeek Harness.🧊 FROZEN — see the repo README
dsh-fastRead-only performance diagnostics for DeepSeek Harness.
dsh-fund-researchDeterministic research reports for Chinese public mutual funds
dsh-githubGitHub PR/issues integration for DSH, every write gated by approval
dsh-industry-researchIndustry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble
dsh-layaLaya typed decisions (noul/choice/score) as a first-class Cordis service and model-visible tools
dsh-libraryLocal document knowledge base for DeepSeek Harness.
dsh-local-aiLocal-model (Ollama) integration for DeepSeek Harness.
dsh-lsp-actionsLSP diagnostics, formatting, completion, code actions and rename over language servers
dsh-maskPII masking middleware: anonymize at the model boundary, restore at the display layer
dsh-mcp-panelRead-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors
dsh-mementoApproval-gated cross-session memory: ctx.memory seam + SQLite + memory tool🧊 FROZEN — see the repo README
dsh-observeOpenTelemetry and Langfuse observability exporter for DeepSeek Harness.
dsh-output-stylesClaude Code outputStyles-equivalent runtime style switching
dsh-permission-rulesClaude Code-style declarative allow/deny/ask permission rules with audit
dsh-plugin-certificationCommunity certification registry with repro-checkable grades and badges
dsh-plugin-doctorZero-dependency static + sandbox smoke detector for DSH plugins
dsh-plugin-guidePlugin-development knowledge base as an on-demand agent skill
dsh-plugin-kitShared zero-runtime-dependency toolkit for the PerryLink DSH plugins
dsh-plugin-upgradeOne-package, one-corridor-index plugin upgrade skill: routes a repository to the matching closed corridor card
dsh-plugin-upgrade-015Merged 0.1.3-alpha.1 → 0.1.5-rc.1 upgrade corridor card plus a zero-dependency seam scanner🚫 RETIRED — corridors carried by dsh-plugin-upgrade
dsh-reachMulti-channel approval/question bridge: WeChat/Telegram/Feishu, session console🧊 FROZEN — see the repo README
dsh-research-reportVerifiable research-report engine: content-addressed evidence ledger and sealed versions
dsh-scoreMulti-dimensional quality scoring for DeepSeek Harness plugins.
dsh-session-pinPin sessions in the Web sidebar with durable ordering🚫 RETIRED — see the note above
dsh-session-syncCross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store.
dsh-skill-pack-securitySecurity-audit skill pack: secret scan, dependency and supply-chain review
dsh-talkVoice-first session loop for DeepSeek Harness: talk to it, hear it answer.
dsh-team-roomsCross-session team rooms: shared message bus, task board and timeline🚫 RETIRED — see the note above
dsh-test-driveIsolated install-and-smoke test drives for DeepSeek Harness plugins.
dsh-ticktickTickTick/Dida365 task bridge: session-header panel + 11 tools
dsh-translateVendor parameter translation and deterministic JSON repair for DeepSeek Harness.

License

MIT. See LICENSE.