Skip to content

feat(market): restructure as the Mayfly/DSH plugin marketplace - #8

Merged
GeekCmore merged 6 commits into
mainfrom
market/registry-v1
Sep 4, 2026
Merged

GeekCmore merged 6 commits into
mainfrom
market/registry-v1

Conversation

@GeekCmore

Copy link
Copy Markdown
Collaborator

What

Turns this repository into the official plugin marketplace for Mayfly / DSH, per the agreed design. Two halves:

  1. plugins/ — the eight plugin sources move here (pure git mv, plus three fixes needed to make GitHub installs work: lib/ build output committed for codex-terminal / sessions / mock, prepare/prepack lifecycle scripts removed since git installs use committed lib, see below).
  2. registry/ — the marketplace: manifest schema v1, 8 official + 6 dsh listings, community submission flow.

Plus zero-dependency tooling (scripts/), CI (registry-validate, index-publish), the first generated dist/index.json + dist/catalog.json, and docs (docs/market.md, rewritten README, updated AGENTS.md).

Key design points

  • Manifests are discovery/install metadata only — the runtime contract stays package + cordis.patch.yml; no runtime manifest (Mayfly's red line).
  • Surfaces (server / web / tui) declare what a plugin contributes; usefulness in a frontend is derived (server ∨ own contribution).
  • Two install sources: npm (preferred) and github: incl. monorepo subdirs (github:Ephemeral-AI-Lab/dsh-plugins#main&path:plugins/loop). All rows of an entry install together (this is also how sibling peers resolve — verified).
  • Two activation modes: bundle (package self-declares dsh.bundle.patch) and profile-patch (installer inserts rows into the profile cordis.patch.yml — what the @deepseek-ai optional plugins need; none of their tarballs ship a patch).
  • install.allowBuilds: pnpm ≥ 10 blocks dependency build scripts; codex-terminal (node-pty) and coding-plan (@google/genai, protobufjs) genuinely need them, so the manifest declares the allowance and the installer writes it into the profile workspace.
  • Official plugins install from GitHub because the dsh-* npm names are currently unpublished — their lib/ output is committed for that reason (release checklist in AGENTS.md).
  • Trust: official / dsh / community tiers, verified recorded at review (lightweight: track latest, weekly re-verification flags drift), removed tombstones instead of deletions.
  • dist/ is workflow-owned: index-publish rebuilds and lands changes via auto-merged PR (never direct pushes to main), then can notify the mayfly website (MARKET_NOTIFY_TOKEN secret, optional).

Verification (all run locally against this branch)

  • node scripts/validate-manifests.mjs — 14/14 pass
  • node scripts/verify-packages.mjs --github-ref market/registry-v1all green, including real scratch installs into throwaway profiles:
    • 8 npm tarball checks (patch present or activation: profile-patch)
    • 9 GitHub installs (loop/mock/preset-builder/sessions/workbench-ui/sidechat×2 rows together/codex-terminal with node-pty build/coding-plan)
  • node scripts/build-index.mjs — dist/index.json (50 KB) + catalog.json (76 KB) generated and jq-parseable

This scratch verification caught four real issues during development, now fixed: pnpm allowBuilds on lifecycle scripts, unpublished dsh-workbench-ui peer (solved by joint-row installs), scoped-name @ version misparsing, and the @scope YAML quoting in generated pnpm-workspace.yaml.

Follow-ups (separate PRs, mayfly repo)

  • /plugin command consuming dist/index.json
  • Website marketplace section (nav third tab + generated plugin pages)

🤖 Generated with Claude Code

GeekCmore and others added 4 commits September 4, 2026 21:55
- move the eight plugin sources under plugins/
- add registry/ with manifest schema v1, 8 official + 6 dsh listings,
  community submission flow and review checklist
- add zero-dependency scripts: validate-manifests, verify-packages
  (npm tarball + GitHub scratch installs), build-index (dist/index.json
  + catalog.json with npm enrichment)
- add registry-validate and index-publish workflows (dist changes land
  through an auto-merged PR; weekly drift re-verification)
- commit built lib/ for codex-terminal, sessions and mock so their
  GitHub install source works (dsh-* npm names are unpublished)
- remove stray mock/get-pip.py; rewrite README as the marketplace front
  page; document the spec in docs/market.md; update AGENTS.md

Co-Authored-By: Claude Code <noreply@anthropic.com>
- drop codex-terminal prepare and rename coding-plan prepack to
  build:dist: git installs use committed lib/, and lifecycle scripts
  trip pnpm >=10 allowBuilds
- verify-packages: scratch-install all rows of an entry together
  (peer deps resolve the way the /plugin installer installs); add
  --github-ref override so PR CI verifies against the PR branch tree

Co-Authored-By: Claude Code <noreply@anthropic.com>
- schema/validator/verify: install.allowBuilds names packages whose build
  scripts pnpm may run (node-pty for codex-terminal; @google/genai and
  protobufjs for coding-plan) — pnpm >= 10 blocks them by default and
  git installs failed without the allowance
- generate dist/index.json + dist/catalog.json (14 entries, npm-enriched)
- document allowBuilds in docs/market.md

Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
@GeekCmore
GeekCmore merged commit d7a605f into main Sep 4, 2026
1 check passed
@GeekCmore
GeekCmore deleted the market/registry-v1 branch September 4, 2026 17:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants