DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-hazchem-check

Hazchem Check

Verification of hazardous chemical threshold quantities and major hazard source identification (checks ledger consistency based on stored quantities and threshold quantities; only flags discrepancies and does not make qualitative conclusions)

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add dsh-hazchem-check@0.2.13
READMECompatibilityVersions

Compatibility and provenance

Hazchem Check is published as dsh-hazchem-check and currently resolves to version 0.2.13. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
11/4/2026

Versions

0.2.13stable
11/4/2026
0.2.12stable
10/30/2026
0.2.11stable
10/18/2026
Show 7 more versionsCollapse versions
0.2.10stable
10/18/2026
0.2.4stable
10/9/2026
0.2.3stable
10/8/2026
0.2.2stable
10/8/2026
0.2.1stable
10/8/2026
0.2.0stable
10/8/2026
0.1.0stable
10/7/2026

Related plugins

Loading related plugins…

Latest
0.2.13
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
558.5 kB
Files
30
Surface
any
License
Apache-2.0
Source
npm
GitHub
★ 0
Weekly downloads
580
Security scan
✓ v0.2.13 scan passed
Last push
11/4/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

README

dsh-hazchem-check — Hazardous chemical register and major hazard source identification check

English · 简体中文 · Español · Português · हिन्दी

What it is — Hazardous chemical register and major hazard source identification check. It returns a list of what is inconsistent, where, and what to fix. Who it is for — safety and hazardous-chemicals managers; no command line required. What you give it — the source material the check works on (a table, register or document); the original is never modified. Excel can be converted to JSON/YAML first, in chat if the platform supports it. What it does not do — no compliance verdict, no liability finding, no replacement for the reviewer; differences only. How to start — search "Safety Compliance Suite" in WorkBuddy / Coze (this check is one part of it; availability as listed); or: dsh plugin --profile <name> add dsh-hazchem-check

DSH Market

dsh-hazchem-check reads one hazardous-chemical register with its major-hazard-source identification record — the site header plus one row per substance — and checks that register's own completeness and arithmetic: that each substance carries a name and a hazard class, that the stored quantity parses as a number, that a threshold is recorded, that the “major hazard source” verdict agrees with how the stored quantity compares with the threshold the register itself states, that a stored substance records its safety data sheet number, that no CAS number is repeated, that the header declares the identification basis, and that no template placeholder survives in the name column.

Install

dsh plugin --profile <name> add dsh-hazchem-check
dsh --profile <name> --dump-config | grep 'dsh-hazchem-check'

What it looks like

Workflow diagram for dsh-hazchem-check: document → rule pack → findings.

Workflow overview: document → rule pack → findings. The examples below use the real command surface.

What it answers

Examples

The table below is the example set: the first row is the detailed walkthrough, the remaining rows are short cases.

Detailed output

Tool hazchem_check

Input

{"rows":[{"化学品名称":"甲醇","最大储存量":"满罐","计量单位":"t"}]}

Output

{
  "id": "dsh-hazchem-check.HZ-002.de09b5a6",
  "ruleId": "HZ-002",
  "severity": "warn",
  "locator": {
    "field": "maxStorage",
    "row": 1
  },
  "found": "第 1 行「maxStorage」的值「满罐」无法解析为数字",
  "expected": "「maxStorage」应填写数字",
  "fix": "储存量应填写数值;本条只核对可解析性,不判断数量是否真实"
}

Observed from tests/fixtures/HZ-002/HZ-002-unsafe.json (cases.json expects HZ-002 count 1); run via lib/index.mjs rules/hazchem-check.yaml

You askWhat it answers
The register says “no”, but the stored quantity is above the threshold written beside it — is that caught?Yes. HZ-003 compares the two numbers the register itself carries and reports the row when the verdict disagrees with them. It does not decide whether the unit really is a major hazard source.
A row has no threshold at all. Does the check say anything?Yes. HZ-004 requires the threshold column to be filled on every row. It checks that a value is present, not that it is the right value for that substance — a 0 passes.
The chemical name is filled in but the hazard class is blank.HZ-001 requires both on each row and reports the row missing either one. It does not judge whether the class is correct.
The quantity column reads 1,500 kg — will that still be read?Yes. HZ-002 takes the numeric part; only a quantity it cannot parse is reported. Whether the figure is true, or taken at the design maximum, is not checked.
Which rows must carry a safety data sheet number?HZ-006: every row that has a stored quantity. The rule checks that the number is filled in, not that the sheet is complete or belongs to that substance.
The same CAS number appears twice, in two warehouses.HZ-007 reports a repeated CAS number, because it defeats both de-duplication and the quantity total. One substance split across warehouses is a legitimate shape: distinguish it in the storage-location column, or disable the rule. With no CAS column the rule reports that it could not run instead of passing silently.

Standards it follows

DocumentNumberCited by rules
《危险化学品安全管理条例》国务院令第591号(2002年1月26日国务院令第344号公布,2011年2月16日国务院第144次常务会议修订通过,自2011年12月1日起施行)HZ-001, HZ-002, HZ-003, HZ-004, HZ-006, HZ-008
《危险化学品重大危险源辨识》GB 18218—2018(2018-11-19发布,2019-03-01实施;全部技术内容为强制性;代替GB 18218—2009)HZ-002, HZ-003
《危险化学品重大危险源辨识》GB 18218—2018(本次未取得条文)HZ-005
《危险化学品安全管理条例》国务院令第591号(本次未取得条文)HZ-007

Boundary: this plugin checks a 危险化学品台账与重大危险源辨识记录 for completeness and arithmetic — that each chemical names itself and its hazard class, that the stored quantity parses, that a threshold is recorded, that the major-hazard-source verdict agrees with how the stored quantity compares to the threshold the register states, that a stored chemical records its safety data sheet number, that CAS numbers are not duplicated, that the register declares its identification basis, and that no placeholder survives. It does not decide whether a unit constitutes a major hazard source, whether it must be registered, whether a safety assessment is required, or whether it is a major hidden danger.

⚠️ What the standard says, and the four errors this plugin cannot find

GB 18218—2018 was obtained and read verbatim (see rules/evidence/clause-verification-tables.md): issued 2018-11-19, in force 2019-03-01, with the foreword stating 「本标准的全部技术内容为强制性的」 — the whole standard is mandatory — and it supersedes GB 18218—2009 (the 2000 and 2009 editions are both withdrawn, so citing them is simply wrong). The definitions of 临界量 (3.3), 单元 (3.2) and 重大危险源 (3.4), the determination rule 4.1.2, and table 1's first 35 rows are all quoted in that report.

Table 1 is complete only to row 35 and table 2 was not obtained, so no threshold value is built in and none can be checked. HZ-003 compares the stored quantity against the threshold the register itself records and checks that the verdict agrees. It therefore cannot find four classes of error, and its own note says so:

  1. A threshold taken from the wrong substance or hazard class — 4.1.2 requires table 1 for listed substances and table 2 otherwise.
  2. A multi-hazard substance not given its lowest threshold — 4.1.2 b): 「若一种危险化学品具有多种危险性, 按其中最低的临界量确定」. Registers carry one figure, so rounding up misses a major hazard source.
  3. The multi-substance correction — within one unit, S = q₁/Q₁ + q₂/Q₂ + … + qₙ/Qₙ ≥ 1 also constitutes a major hazard source. This plugin does not perform that summation, because identification works per production or storage unit (3.2, 3.5, 3.6) while a register lists substances without unit grouping.
  4. The quantity basis — 4.2.2 requires the quantity to be taken at the design maximum, while a register may record stock on hand.

⚠️ Stay inside the standard's scope. Clause 1 excludes off-site transport of hazardous chemicals (rail, road, water, air, pipeline), nuclear and military facilities, mining (except processing and storage), and offshore oil and gas extraction. Using this plugin on a transport consignment is out of scope — that is governed by dangerous-goods transport rules, not by GB 18218.

A finding therefore means only "the two numbers you wrote do not agree with your own verdict". The four items above need a unit-by-unit calculation under the standard, which is a safety-assessment and regulator-determination task. Every excerpt still says "本次未取得" and every rule stays warn or info, because what this plugin checks is a register's internal consistency, not whether a threshold value is correct.

Compatibility

SurfaceStatus
HarnessPeer range >=0.1.2-rc.1 <0.2.0 || >=0.2.0-0 <0.3.0 — verified to accept both 0.2.0-rc.2 and 0.2.1-rc.2. engines.dsh is declared as >=0.2.1-0 <0.3.0 and is enforced by the host since 0.2.1
Node`^22.19.0
PlatformsAll (plain ESM; no native code, no network, no model call)
Tool modeWorks in native and ptc; for a site's register use ptc

What it does

Registers the hazchem_check tool. It reads one chemical register — the site header plus one row per substance — applies a versioned rule pack, and returns a report.

RuleCheckSeverityBasis kind
HZ-001the name and hazard class are recordedwarnprinciple
HZ-002the stored quantity parses as a numberwarnprinciple
HZ-003the verdict agrees with quantity and thresholdwarnprinciple
HZ-004a threshold is recordedwarnprinciple
HZ-005the register declares its identification basiswarnprinciple
HZ-006a stored chemical records its SDS numberwarnprinciple
HZ-007CAS numbers are not duplicatedwarnprinciple
HZ-008the name column holds no unreplaced placeholderwarnprinciple

Configuration

KeyTypeDefaultDescription
rulesFilestringrules/hazchem-check.yamlRule-pack path, relative to the package root
disabledRulesstring[][]Rule ids to stop running; each appears in skipped
onlyRulesstring[][]Run only these rule ids; empty runs every rule
skipNotesstring""Note appended to every skipped reason
timeoutMsnumber120000Cooperative tool timeout budget

Rule-level parameters worth knowing:

  • HZ-003 valueField / limitField / verdictField / overValues / atMostValues / tolerance — the three columns and the two verdict vocabularies, defaulting to [是, Y, yes, true, 构成, 重大危险源, √] and [否, N, no, false, 不构成, 未构成].
  • HZ-008 terms — the placeholders to look for.

Material format

The tool accepts JSON or YAML:

company: 某某化工有限公司
site: 某某厂区
assessmentAt: 2026-03-01
basis: GB 18218—2018 与 2025 年版危险化学品目录
rows:
  - { 序号: '1', 化学品名称: 甲醇, CAS号: 67-56-1, 危险性类别: 易燃液体,
      储存位置: 罐区 T-01, 最大储存量: '80', 计量单位: t, 临界量: '500',
      是否重大危险源: 否, 安全技术说明书编号: SDS-2026-0018, 保管人: 李工 }

Column names are matched case-insensitively and ignoring spaces, underscores and hyphens; the register's own column names are kept, so a finding names the column it read.

Rule sources

Rule data lives in rules/hazchem-check.yaml. Its header explains that the plugin holds no threshold table and performs no multi-substance correction, and each rule's note repeats the part that matters for that rule. The load-time guard still requires a document, clause, excerpt and source per rule, and still forbids a principle-derived check from being error.

Troubleshooting

  • HZ-003 passed a threshold I know is wrong. It compares against the threshold the register states. Whether that value belongs to the right substance and hazard class is a substantive question it does not touch.
  • It did not flag a unit that should be a major hazard source. It has no threshold table and does not perform GB 18218's multi-substance summation. Work the unit out under the standard yourself.
  • HZ-004 passes a threshold of 0. The rule checks that the column is filled, not what it contains. Only a person comparing against the standard can judge the value.
  • HZ-007 never runs. The register records no CAS numbers. Without a unique identifier the rule reports that it could not run rather than checking the wrong column.
  • HZ-007 fires on one substance in two warehouses. That is a legitimate register shape — say so in the storage-location column and disable the rule if your register is organised that way.
  • The plugin installs but the tool never appears. Check that main resolves to lib/index.mjs and that pnpm run build produced it; a wrong main makes the loader skip the entry silently.
  • dsh plugin add refuses the package as incompatible. The peer range covers 0.1.x and 0.2.x; if your runtime sits outside it, grant an explicit exemption: dsh plugin --profile <name> allow-version dsh-hazchem-check@0.1.0 --dsh-version <runtime> --accept-risk
  • check reports manifest-peers as failed. The static checker compares against a hard-coded peer range that predates the 0.2 line. The runtime enforces peer compatibility at install time, so the declared range is the correct one; this is a known upstream issue in dsh-plugin-dev.

Development

pnpm install
pnpm run typecheck   # tsc --noEmit
pnpm test            # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build       # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-hazchem-check   # refresh src/shared from ../_shared

The plugin is data-only: src/model.ts declares the table shape, the shared kit supplies the reader and the check engine, and the rule pack declares every check.

PerryLink DSH Plugin Family

Full family index: choose a checker by material and all plugins. This repository is one of them.

License

Apache License 2.0 © 2026 dsh-hazchem-check contributors.

Related plugins

More verified plugins in security-access.

Experimental Auto Review@deepseek-ai/dsh-experimental-auto-reviewPer-tool LLM authorization review for the DeepSeek Harness Auto permission presetCc Safety Netcc-safety-netA coding agent CLI hook - block destructive commands and secret file accessDoctor@linxin666/dsh-doctorTransactional rescue mode for DSH profiles with a supervised launcher, isolated recovery capsule, deterministic repairs, health monitoring, and a local Web recovery consolePocketdsh-pocketPut DeepSeek Harness in your pocket: one package, one settings page, and scan a QR code on your phone to access DSH on your computer in sync (LAN + public network, real-time screen mirroring).