Skip to content

(feat) Add Cursor Marketplace plugin form#119

Merged
k-berger merged 7 commits into
mainfrom
cursor-marketplace-plugin
Jun 19, 2026
Merged

(feat) Add Cursor Marketplace plugin form#119
k-berger merged 7 commits into
mainfrom
cursor-marketplace-plugin

Conversation

@k-berger

@k-berger k-berger commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds .cursor-plugin/plugin.json, cursor/plugin-hooks.json, and the dash0-configure skill (under skills/) so the repo is installable from the Cursor Marketplace alongside the existing install-cursor.sh flow. Cursor's user-invocable unit is a skill (SKILL.md with name: + description: frontmatter), not a slash command — agents surface skills by description match rather than literal /name triggers.
  • install-cursor.sh no longer carries a hardcoded VERSION — it queries api.github.com/repos/.../releases/latest on each run, with DASH0_VERSION= as an override. Removes the failure mode where a release that bypassed scripts/release.sh would leave the installer pointing at the previous tag.
  • scripts/release.sh and cursor/README.md updated accordingly: install-cursor.sh is dropped from the version-bump set, and the README documents both install paths.
image image

Test plan

  • Plugin loads in Cursor as a local sideload (under ~/.cursor/plugins/local/dash0-agent-plugin/), .cursor-plugin/plugin.json is read, and the dash0-configure skill surfaces semantically.
  • The ./scripts/cursor-on-event.sh relative path in cursor/plugin-hooks.json resolves from the plugin root — the hook fires on every Cursor event and emits OTel spans (confirmed by setting debug: true in the config and tailing the debug file).
  • The skill writes ~/.cursor/dash0-agent-plugin.local.md correctly when triggered.
  • bash install-cursor.sh against a clean user: verify dynamic version resolution lands on the current latest, and the connectivity check passes.
  • DASH0_VERSION=0.1.9 bash install-cursor.sh: verify the env-var override pins to the older release.
  • Spans visible in Dash0 — currently blocked by what looks like an unrelated upstream ingestion issue; investigating separately.

Notes for reviewers / future authors

  • Symlink sideload doesn't work on current Cursor builds. The official create-plugin-scaffold skill from cursor/plugins tells authors to ln -s into ~/.cursor/plugins/local/<name>/, but on Cursor 2.5.x that path was ignored (plugin not discovered). A full cp -R (or rsync) into the same location does work. Worth filing upstream.
  • The Claude Code plugin form (.claude-plugin/plugin.json, commands/open-session.md, hooks/hooks.json) is unchanged and continues to work in parallel.

k-berger added 2 commits June 17, 2026 10:52
Ships .cursor-plugin/plugin.json + cursor/plugin-hooks.json so the repo is
installable from the Cursor Marketplace, alongside the existing
install-cursor.sh flow. The plugin form uses a relative ./scripts/cursor-on-event.sh
path (resolved from the plugin root) instead of $HOME/.local/share/...,
which let the existing bootstrap script stay unchanged.

Adds commands/dash0-configure.md to replace the installer's interactive
prompt: end users run /dash0-configure inside Cursor to write the OTLP
URL + token to ~/.cursor/dash0-agent-plugin.local.md.

release.sh now bumps .cursor-plugin/plugin.json alongside the others, and
cursor/README.md documents both install paths.
install-cursor.sh no longer carries a hardcoded VERSION. It queries the
GitHub API for the latest release on each run, with DASH0_VERSION as an
override for pinning. Removes the failure mode where a release that
skipped scripts/release.sh would leave the installer pointing at the
previous tag.

release.sh and cursor/README.md updated to reflect that install-cursor.sh
is no longer part of the version-bump set.
@GuyMoses

GuyMoses commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Two small things:

  • Description is stale. It says it adds "the dash0-configure skill (under skills/)", but the diff adds commands/dash0-configure.md — no skills/ dir or SKILL.md.

  • Use a semantic PR/commit title, e.g. feat(cursor): add Marketplace plugin form (feat/fix/docs/chore), matching the existing history.

@k-berger k-berger changed the title Add Cursor Marketplace plugin form (feat) Add Cursor Marketplace plugin form Jun 18, 2026
k-berger and others added 4 commits June 18, 2026 11:50
Cursor's user-invocable unit is a skill (SKILL.md with name + description
frontmatter), surfaced to the agent semantically. The original commands/
path was a Claude Code shape that Cursor's plugin loader did not pick up
during local sideload testing.

Replaces commands/dash0-configure.md with skills/dash0-configure/SKILL.md
and updates the manifest accordingly. Claude Code's commands/open-session.md
and .claude-plugin/plugin.json are unchanged.
Root README is now a hub — it pitches the idea (connect coding agents to
Dash0 for deep insight into AI usage) and points at the per-runtime docs.

Claude Code docs move to .claude-plugin/README.md (unchanged content,
just relocated). New .cursor-plugin/README.md holds end-user-facing
Cursor docs: install via Marketplace or shell installer, configure via
the dash0-configure skill, verify, uninstall. cursor/README.md becomes
the developer reference (build, sideload local changes, cut releases,
capture-mode fixtures), with a pointer to the user-facing README.

Drops the stale cursor-source-handoff-brief.md — the research it
captured has been folded into the integration.
Copied verbatim from cursor/plugin-template@main:
  scripts/validate-template.mjs

Required for Cursor Marketplace submission. The script expects a
multi-plugin .cursor-plugin/marketplace.json layout — since this repo
is a single plugin, the validator early-returns "Validation passed"
without actually checking the manifest. Present-in-repo is what the
submission process appears to need; real validation would require
either a marketplace-style restructure or a single-plugin validator.
@k-berger k-berger merged commit 348610d into main Jun 19, 2026
8 checks passed
@k-berger k-berger deleted the cursor-marketplace-plugin branch June 19, 2026 10:23
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