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

@playform/ets-plugin-dsh-normalize-file

Ets Plugin Dsh Normalize File

The file-content normalizer flavor: a DeepSeek Harness plugin that registers the normalize family's `normalize-file` tool - the read → count → write pipeline over files ALREADY on disk, beyond the tool layer. One agent-chosen file per call: the target's c

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

npx -y @deepseek-ai/dsh plugin --profile web add @playform/ets-plugin-dsh-normalize-file@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Ets Plugin Dsh Normalize File is published as @playform/ets-plugin-dsh-normalize-file and currently resolves to version 0.2.1. 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.1stable
10/28/2026
0.2.0stable
10/25/2026
0.1.0stable
10/25/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
37.6 kB
Files
28
Surface
any
License
CC0-1.0
Source
npm
GitHub
★ 2
Weekly downloads
284
Security scan
✓ v0.2.1 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

Related plugins

More verified plugins in developer-tools.

Better Sidebardsh-better-sidebarBetter Sidebar for DSH — file tree, editor, changes, tasks and side chat in one column, separate for every conversation. Also exposes a service other plugins use to register sidebar tabs and file viewers.Client Ui Git Graph@linxin666/dsh-client-ui-git-graphExternal dsh web GUI plugin: a blank-session git branch selector + Git graph, with real host-side git operations and guards, as a dsh profile bundleSsh@linxin666/dsh-sshRemote SSH operations for the dsh web GUI: host config store (~/.dsh/dsh-ssh.json, import from ~/.ssh/config), a persistent ssh2 connection pool with jump-host support, exec / PTY web terminal / SFTP transfer / local port-forward tunnels / cluster executiUpdate@linxin666/dsh-updateSelf-update plugin for the dsh web GUI: probes npm for newer family releases and runs the owning profile's pnpm update in place, from a sidebar trigger beside the settings seat with a release-notes panel

README

@playform/ets-plugin-dsh-normalize-file - The file-content normalizer

Version 0.1.0 - UNPUBLISHED (the npm bootstrap tier 2-planned / 3-candidates).

The role

The file-content normalizer - a DeepSeek Harness plugin that registers the normalize family's normalize-file TOOL: the read → count → write pipeline over files ALREADY on disk, beyond the tool layer.

One agent-chosen file per call: the target's content is read, the family's SIX transforms (the core's Dashes/Quotes/Ellipsis/Spaces/Invisible/Fullwidth tables through the shared Replace/ReplaceMap replacers, the same chain that the raw-write normalize: true applies) are applied with a per-character count, and only when N > 0 is the rewritten content written back through the factory's ONE shared write executor (resolve-side read, fs/write-intent waterfall, standing sandbox policy, writeText, the root-context fs/observed present emit).

N = 0 writes NOTHING - the no-op no-write rule.

The rewrite is explicit, visible (a diff card showing the before/after), and opt-in by construction: the family's first LISTENER-LESS flavor (no llm/stream, no fs/observed - the background-rewrite posture of the design report is deliberately deferred, because it would break the edit tool's old_string contract).

The lowest plumbing layer - the ledger Append, the shared journal, and the activation-line composer - lives in the family's base package ets-base-dsh, reached through the factory.

The surfaces

KindNameWhat
toolnormalize-fileThe tool the plugin registers (Context.tools.register) - one file per call.
toolnormalize-overpassThe human command (registered through the factory's commands seam): arms a one-shot overpass.
listenertools/post-executeThe tool-results overpass arm (registered with prepend: true).
listeneragent/pre-stepThe batch overpass arm.
configSchemastery Config schemaThe exported Config (the minimal shared block + the module's own fields).
configledger fileThe module's own ledger, SEPARATE from the family's logs (one log per module).

The configuration

FieldTypeDefaultMeaning
logbooleantrueLedger enabled - write the durable log file (volatile).
logFilestring~/.dsh/playform/plugin-dsh-normalize-file.logThe file-flavor ledger, SEPARATE from the family's logs (volatile; overrides the minimal shared block's empty default).
replacementstring-The dash replacement - the transform's ONLY knob (ASCII hyphen-minus by default; volatile: the next tool call picks it up with no remount).
scopesobject(see leaves)Granular scope gates, ALL volatile as one object (live toggling, no remount): one leaf change commits one update whose whole object the refresh listener re-reads.
scopes.conversationbooleantrueThe conversation/text/block-end gate.
scopes.reasoningbooleantrueThe reasoning sub-gate.
scopes.toolInputbooleanfalseThe tool-call arguments arm.
scopes.toolResultsbooleanfalseThe tools/post-execute arm.
scopes.filesbooleantrueThe normalize-file tool itself - the ONLY arm this tool flavor has; off means the tool returns the unchanged changed: false result with no read, no write, no ledger line.
scopes.batchbooleanfalseThe agent/pre-step arm.
toolResultsExemptstring[]["read", "edit", "raw-write", "normalize-file", "ccr_retrieve", "subagent", "ask_user_question"]Tool-results exemption list (volatile): a tool result whose exec name is listed passes through by identity.

All fields are volatile (hot edits commit WITHOUT remounting the plugin).

The other five scopes are inert in this flavor but present in the schema so one patch override drives the whole family.

The ledger

plugin-dsh-normalize-file: activated (replacement=-, logFile=~/.dsh/playform/plugin-dsh-normalize-file.log)
plugin-dsh-normalize-file: normalized N char(s) in <path>
plugin-dsh-normalize-file: command "normalize-overpass" registration skipped (the mount continues): <cause>

Written through the factory's Append (the durable file line is [<ISO>] <message>).

The activation line is written by apply(), and the count line follows only a successful N > 0 write - a no-op writes no line, and a failed read or an aborted call writes none either.

Each N > 0 write also journals one normalized record into the shared package_governance v2 domain.

The build and the tests

  • Build: pnpm --config.verify-deps-before-run=false --dir EffectTS/packages/ets-plugin-dsh-normalize-file run prepublishOnly
  • Smokes: node EffectTS/packages/ets-plugin-dsh-normalize-file/Target/Test/<Folder>/Test.js
    • Config-And-Registration - 18 checks
    • Error-Paths - 10 checks
    • No-Op-Rule - 11 checks
    • Overpass - 29 checks
    • Presenters - 8 checks
    • Read-Write-Pipeline - 24 checks
    • Volatile-Live-Flip - 12 checks

The plan

This package ships no SCHEME.md (it is not in the package.json exports map and not on disk), and the reusable family scheme lives in the sibling packages' SCHEME.md files.