Passing the awesome-dsh-plugin Review: The Maintainer Checklist

August 15, 2026 · View on GitHub

By zoahdev · 2026-08-15 · Based on maintainer fkysly's actual review of PR #352

The boundary

awesome-dsh-plugin only lists plugins installable with a single dsh plugin add (boundary discussion: PR #248).

A pure CLI tool is out of scope unless published to npm for npx. The maintainer's words: "a health checker an agent can call is far more valuable to the ecosystem than a CLI". Either make it a plugin, or don't submit it here.

Checklist

#ItemFailure modeHow to verify yourself
1dsh.bundle in package.jsonOnly bin, no dsh fieldnode -e "console.log(require('./package.json').dsh)"
2dsh.bundle.patch points at an existing cordis.patch.ymlPlugin id missing from dump-configdsh --profile web --dump-config
3cordis.patch.yml valid, with an insert row carrying an idYAML error / empty listdoctor's patch check
4files allowlist includes build outputSomeone installs and gets only src/pnpm pack --dry-run
5prepare scriptGit installs never buildnpm pkg get scripts.prepare
6At least one model tool (agent-callable)Installs but the agent cannot use itctx.tools.register in apply()
7CI proves real callabilityOnly proves loadabilityInstall tarball → register → execute handler → assert
8README covers install + usageNobody knows what to do nextFollow your own README
9Real install verificationNever installed it yourselfdsh plugin --profile web add <tarball>

One command covers ~80%

git clone https://github.com/zoahdev/dsh-plugin-doctor.git
cd dsh-plugin-doctor && pnpm install && pnpm build
node lib/bin.js --build --full /path/to/your-plugin

Covers: manifest / patch / entry / files / build / pack / fresh-profile install / dump-config.

The three most common rejections (maintainer's own words)

  1. No dsh.bundle — only bin, no plugin shell;
  2. files lists only src/lib/ not shipped, no prepare;
  3. Pure CLI submitted as a plugin — it cannot be installed, and it is outside the list boundary.

What to do after a rejection

A closed PR is not the end. In PR #352:

  1. The maintainer offered two paths (pure CLI → npm npx; or add a plugin shell);
  2. We took the plugin-shell path: cordis.patch.yml + dsh.bundle + a plugin_check model tool, keeping the bin;
  3. We proved every item with real CI (packaged install + real invocation + self-check), then asked for a re-review.

Treat the review as an acceptance spec, not a debate.

Resources