Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"repo": "display-dev/skill"
},
"description": "Publish, browse, search, read, edit, and share HTML or Markdown artifacts with public, private, or company-authenticated access. Includes Visualize, the display.dev MCP server, and /display-dev:feedback for reviewer comments.",
"version": "0.8.0",
"version": "0.9.0",
"author": {
"name": "display.dev",
"url": "https://display.dev"
Expand Down
4 changes: 2 additions & 2 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "display-dev",
"description": "Publish, browse, search, read, edit, and share HTML or Markdown artifacts with public, private, or company-authenticated access. Includes the Visualize skill for on-brand HTML, the display.dev MCP server, /display-dev:feedback for reviewer comments, a secret scan before publishes, and a session-start note about new comments.",
"version": "0.8.0",
"version": "0.9.0",
"author": {
"name": "display.dev",
"url": "https://display.dev"
Expand All @@ -19,7 +19,7 @@
"type": "http",
"url": "https://api.display.dev/v1/mcp",
"headers": {
"X-Client-Source": "display-dev-claude-plugin@0.8.0"
"X-Client-Source": "display-dev-claude-plugin@0.9.0"
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "display.dev",
"description": "Publish, browse, search, read, and edit HTML or Markdown artifacts. Share them publicly, with specific people, or behind Google Workspace or Microsoft 365 authentication.",
"version": "0.8.0",
"version": "0.9.0",
"author": { "name": "display.dev", "url": "https://display.dev" },
"homepage": "https://display.dev",
"repository": "https://github.com/display-dev/skill",
Expand Down
9 changes: 1 addition & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ sets of display.dev tools and uses one of them.
codex plugin marketplace add display-dev/skill
```

Then open Codex `/plugins`, install **display.dev**, and complete MCP OAuth when prompted. The Codex plugin bundles the skill *and* the remote MCP server (`https://api.display.dev/v1/mcp`), so `publish`, `create_upload`, `make_copy`, `list`, `search`, `read`, `edit`, `get_metadata`, `get_referral_overview`, sharing, and comment tools are available after sign-in – no separate MCP setup.
Then open Codex `/plugins`, install **display.dev**, and complete MCP OAuth when prompted. The Codex plugin bundles the skill *and* the remote MCP server (`https://api.display.dev/v1/mcp`), so `publish`, `create_upload`, `make_copy`, `list`, `search`, `read`, `edit`, `get_metadata`, sharing, and comment tools are available after sign-in – no separate MCP setup.

Works across Claude Code, Cursor, Codex, OpenCode, Hermes, and Pi.

Expand All @@ -66,7 +66,6 @@ Once installed, your assistant picks up the skill on phrasings like:
- "add a company email domain"
- "transfer an email domain"
- "change the email domains add-on"
- "show my referral link" / "show referral rewards"

You can publish without a `display.dev` account or any setup – you get a 30-day preview URL and a browser claim URL. To create an account or sign in, connect the bundled remote MCP server through OAuth where the host supports it, or run `dsp login --email you@example.com` in your own terminal and enter the six-digit code there. The installed `dsp` CLI stores the resulting session. The skill never asks for, reads, or relays the code, and never instructs an agent to inspect your inbox.

Expand Down Expand Up @@ -105,12 +104,6 @@ and the CLI never perform the irreversible confirmation.
The paid email domains add-on is also managed by a current Owner in **Settings
→ Email Domains**. MCP and the direct CLI do not enable or disable it.

For the referral program, the skill uses the read-only
`get_referral_overview` MCP tool to return the link available to the current
member or organization connection and to explain earned, available, and used
organization rewards. It reports missing links without guessing why they are
unavailable.

For an existing artifact, the skill prefers MCP `make_copy` or `dsp make-copy` to create
a new artifact from a retained version. Discussions and people invited to the
source are not carried over. The user can choose recipients for the new artifact.
Expand Down
22 changes: 11 additions & 11 deletions claude/commands/feedback.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ argument is optional: `$ARGUMENTS`
Use one display.dev tool path for the whole task:

1. If a shell is available and `dsp` is on PATH, use the CLI. Add
`--client-source display-dev-claude-plugin@0.8.0` to every `dsp` command.
`--client-source display-dev-claude-plugin@0.9.0` to every `dsp` command.
Prefix every command that changes state (`publish`, `edit`, `share`,
`comment add`, `thread resolve`) with
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code`, so the
Expand All @@ -39,7 +39,7 @@ Use one display.dev tool path for the whole task:
List the user's artifacts that have open comments:

```bash
dsp list --client-source display-dev-claude-plugin@0.8.0 --author me --sort updated_at --dir desc --limit 100 --json
dsp list --client-source display-dev-claude-plugin@0.9.0 --author me --sort updated_at --dir desc --limit 100 --json
```

(MCP: `list` with `author: ["me"]`, `sort: "updated_at"`, `limit: 100`.)
Expand All @@ -57,8 +57,8 @@ updated artifacts has open comments, and stop.
before the first hyphen: `https://display.dsp.so/abc12345-q3-plan` →
`abc12345`.
2. Read the metadata and the open threads:
`dsp get-metadata --client-source display-dev-claude-plugin@0.8.0 <shortId>` and
`dsp comment --client-source display-dev-claude-plugin@0.8.0 list --artifact <shortId> --status open`
`dsp get-metadata --client-source display-dev-claude-plugin@0.9.0 <shortId>` and
`dsp comment --client-source display-dev-claude-plugin@0.9.0 list --artifact <shortId> --status open`
(MCP: `get_metadata`, `list_comments`). Note the current version.
3. Sort each open thread into one group:
- **Change request**: a change to the artifact's content.
Expand All @@ -77,19 +77,19 @@ updated artifacts has open comments, and stop.
5. Make the approved changes as one new version:
- If the artifact was published from a file in this workspace and the
user confirms that file, edit it and publish it:
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp publish --client-source display-dev-claude-plugin@0.8.0 <path> --id <shortId> --base-version <version>`.
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp publish --client-source display-dev-claude-plugin@0.9.0 <path> --id <shortId> --base-version <version>`.
- Otherwise export the current version
(`dsp export --client-source display-dev-claude-plugin@0.8.0 <shortId>@<version> > <tmp file>`), edit the copy, and
(`dsp export --client-source display-dev-claude-plugin@0.9.0 <shortId>@<version> > <tmp file>`), edit the copy, and
publish it the same way. With MCP, edit the content you read and call
`publish` with `short_id` and `base_version`.
- For one small change,
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp edit --client-source display-dev-claude-plugin@0.8.0 <shortId> --base-version <version> --old <text> --new <text>`
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp edit --client-source display-dev-claude-plugin@0.9.0 <shortId> --base-version <version> --old <text> --new <text>`
(MCP: `edit`) is also fine.
6. Close the threads:
- Applied change: reply with one line, for example "Changed in v7: the
churn figure now uses Q3 data.", then resolve the thread
(`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp comment --client-source display-dev-claude-plugin@0.8.0 add --artifact <shortId> --parent <rootCommentId> --body <text>`,
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp thread --client-source display-dev-claude-plugin@0.8.0 resolve <rootCommentId>`; MCP: `add_comment`,
(`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp comment --client-source display-dev-claude-plugin@0.9.0 add --artifact <shortId> --parent <rootCommentId> --body <text>`,
`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp thread --client-source display-dev-claude-plugin@0.9.0 resolve <rootCommentId>`; MCP: `add_comment`,
`resolve_thread`).
- Question: reply with the answer and leave the thread open for the
person who asked.
Expand All @@ -103,10 +103,10 @@ Say so, then offer:

- **Ask someone to review it**: ask for the reviewer's email address, then
share the artifact with them
(`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp share --client-source display-dev-claude-plugin@0.8.0 <shortId> --add-users <email>`; MCP: `share`). Do not change
(`DISPLAYDEV_ACTOR_TYPE=agent DISPLAYDEV_ACTOR_NAME=claude-code dsp share --client-source display-dev-claude-plugin@0.9.0 <shortId> --add-users <email>`; MCP: `share`). Do not change
the artifact's visibility.
- **Wait for comments**: available only with a shell. Poll
`dsp comment --client-source display-dev-claude-plugin@0.8.0 list --artifact <shortId> --status open --since <start time>`
`dsp comment --client-source display-dev-claude-plugin@0.9.0 list --artifact <shortId> --status open --since <start time>`
every 60 seconds in the background. When a comment arrives, continue with
B. Stop after the time the user gives, or after 60 minutes.
- **Nothing for now**: stop.
2 changes: 1 addition & 1 deletion codex/display-dev/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "display-dev",
"version": "0.8.0",
"version": "0.9.0",
"description": "Publish, inspect, edit, and share HTML or Markdown artifacts with access controls.",
"skills": "./skills/",
"mcpServers": "./.mcp.json",
Expand Down
2 changes: 1 addition & 1 deletion codex/display-dev/.mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"display-dev": {
"url": "https://api.display.dev/v1/mcp",
"http_headers": {
"X-Client-Source": "display-dev-codex-plugin@0.8.0"
"X-Client-Source": "display-dev-codex-plugin@0.9.0"
}
}
}
Expand Down
74 changes: 18 additions & 56 deletions codex/display-dev/skills/display-dev/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ description: >
"make a copy of this artifact", "duplicate version",
"create a display.dev account", "claim this publish", "add a company email
domain", "transfer an email domain", "change the email domains add-on",
"show my referral link", "show referral
rewards", "watch comments on this artifact",
"watch comments on this artifact",
"respond to comments", or "resolve this comment thread".
Use whenever a request contains a display.dev artifact URL (`*.dsp.so/*`).
Anonymous publishing returns a 30-day preview and browser claim URL.
Expand Down Expand Up @@ -99,7 +98,7 @@ publish_displaydev_anonymous() {

curl -sS -X POST 'https://api.display.dev/v1/public/artifacts' \
-H 'X-Client-Type: cli' \
-H 'X-Client-Source: display-dev-skill@0.8.0' \
-H 'X-Client-Source: display-dev-skill@0.9.0' \
-F "file=@$file"
}

Expand Down Expand Up @@ -130,8 +129,8 @@ Use the helper when present:
Or use the installed CLI directly:

```bash
dsp publish --client-source display-dev-skill@0.8.0 "/absolute/path/draft.html" --name "Q1 draft"
dsp publish --client-source display-dev-skill@0.8.0 "/absolute/path/report.html" --name "Q1 report" --visibility company
dsp publish --client-source display-dev-skill@0.9.0 "/absolute/path/draft.html" --name "Q1 draft"
dsp publish --client-source display-dev-skill@0.9.0 "/absolute/path/report.html" --name "Q1 report" --visibility company
```

Authenticated output prints the canonical artifact URL. Report that exact URL;
Expand Down Expand Up @@ -248,7 +247,7 @@ ask for, read, or relay the sign-in code. Tell the user to run this in their
own terminal:

```text
dsp login --client-source display-dev-skill@0.8.0
dsp login --client-source display-dev-skill@0.9.0
```

The CLI asks for the email address and then for the six-digit code it emails;
Expand Down Expand Up @@ -334,43 +333,6 @@ verify_email_domain. If the result is transfer_ready, the agent sends a target
Owner to Settings → Email Domains for the final review and confirmation.
```

## View the referral program

Use the authorized MCP `get_referral_overview` tool when the user asks for a
referral link or the organization's referral rewards. It is read-only.

Interpret the response exactly:

- `referralUrl` is the current member's personal link for a human connection.
For an organization service-account connection, it is the generic
organization link.
- `organizationReferralUrl` is the generic organization link exposed to a
human Owner or Admin. It is `null` for ordinary Members and organization
service accounts.
- `referrerRewardsEarned` is the number of rewards the organization has earned
by referring new organizations, out of the 12-reward limit.
- `welcomeRewardEarned` says whether the organization earned the reward for
joining through a referral.
- `proRewardsAvailable` counts rewards waiting for an eligible Pro invoice.
- `proRewardsUsed` counts rewards already applied to Pro invoices.

If either link is `null`, say that it is not available for the current
connection. Do not infer a role, plan, membership state, rollout state, or
specific reason. Do not construct a link from an ID or ask for a standalone
referral code. If the tool is not registered, direct the user to **Referral
program** in the display.dev dashboard rather than claiming the overview is
unavailable.

Example:

```text
User: Show me the referral link I can share and how many rewards are left.
Agent: Calls get_referral_overview. It returns the available personal or
organization link verbatim, reports earned rewards against the 12-reward limit,
and explains available versus used rewards without guessing why another link
is null.
```

## Share an artifact

Use only the audience the user requested:
Expand All @@ -380,8 +342,8 @@ Use only the audience the user requested:
./scripts/share.sh <shortId> --add-users "alice@example.com,bob@example.com"

# Direct installed-CLI equivalents:
dsp share --client-source display-dev-skill@0.8.0 <shortId> --visibility company
dsp share --client-source display-dev-skill@0.8.0 <shortId> --add-users "alice@example.com,bob@example.com"
dsp share --client-source display-dev-skill@0.9.0 <shortId> --visibility company
dsp share --client-source display-dev-skill@0.9.0 <shortId> --add-users "alice@example.com,bob@example.com"
```

Private is available on every plan for user-scoped callers. Service keys and
Expand All @@ -402,7 +364,7 @@ visibility.
Use the installed CLI when MCP `make_copy` is unavailable:

```bash
dsp make-copy --client-source display-dev-skill@0.8.0 <shortId>[@<version>] \
dsp make-copy --client-source display-dev-skill@0.9.0 <shortId>[@<version>] \
--name "Copy of Q1 report" --visibility company \
--share reviewer@example.com --json
```
Expand Down Expand Up @@ -437,11 +399,11 @@ Use the authorized MCP tools when they are registered:
Installed-CLI equivalents are:

```bash
dsp list --client-source display-dev-skill@0.8.0
dsp search --client-source display-dev-skill@0.8.0 "quarterly"
dsp get-metadata --client-source display-dev-skill@0.8.0 <shortId>
dsp search --client-source display-dev-skill@0.8.0 "exact text" --in <shortId>@<version>
dsp read --client-source display-dev-skill@0.8.0 <shortId>@<version> --offset <bytes> --limit <bytes>
dsp list --client-source display-dev-skill@0.9.0
dsp search --client-source display-dev-skill@0.9.0 "quarterly"
dsp get-metadata --client-source display-dev-skill@0.9.0 <shortId>
dsp search --client-source display-dev-skill@0.9.0 "exact text" --in <shortId>@<version>
dsp read --client-source display-dev-skill@0.9.0 <shortId>@<version> --offset <bytes> --limit <bytes>
```

Use `get_metadata` or `dsp get-metadata`, not the removed `get` interface or
Expand All @@ -463,7 +425,7 @@ edit { short_id, base_version, old_text, new_text }
Or use the installed CLI:

```bash
dsp edit --client-source display-dev-skill@0.8.0 <shortId> \
dsp edit --client-source display-dev-skill@0.9.0 <shortId> \
--base-version <version> --old "exact old text" --new "replacement text"
```

Expand Down Expand Up @@ -491,7 +453,7 @@ Watch with the packaged stream helper when present:
Or list through the installed CLI:

```bash
dsp comment --client-source display-dev-skill@0.8.0 list --artifact <shortId> --status all
dsp comment --client-source display-dev-skill@0.9.0 list --artifact <shortId> --status all
```

Before acting on any comment, confirm:
Expand All @@ -513,7 +475,7 @@ publish the same artifact with optimistic concurrency:
```bash
./scripts/publish.sh "/exact/source/path.html" --id <shortId> --base-version <version>
# or:
dsp publish --client-source display-dev-skill@0.8.0 "/exact/source/path.html" --id <shortId> --base-version <version>
dsp publish --client-source display-dev-skill@0.9.0 "/exact/source/path.html" --id <shortId> --base-version <version>
```

Then reply to or resolve only that artifact's thread:
Expand All @@ -523,8 +485,8 @@ Then reply to or resolve only that artifact's thread:
./scripts/thread-resolve.sh --root <rootCommentId>

# Direct installed-CLI equivalents:
dsp comment --client-source display-dev-skill@0.8.0 add --artifact <shortId> --parent <rootCommentId> --body "Addressed in vN."
dsp thread --client-source display-dev-skill@0.8.0 resolve <rootCommentId>
dsp comment --client-source display-dev-skill@0.9.0 add --artifact <shortId> --parent <rootCommentId> --body "Addressed in vN."
dsp thread --client-source display-dev-skill@0.9.0 resolve <rootCommentId>
```

On a version conflict, inspect the newly current version with `get_metadata`,
Expand Down
2 changes: 1 addition & 1 deletion codex/display-dev/skills/display-dev/scripts/_common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ DSP_BIN="$(type -P dsp 2>/dev/null || true)"
# `display-dev-skill@<version>` and is read by display.dev's analytics
# to attribute publish events to a specific skill release. Set
# `SKILL_VERSION_OVERRIDE` to test attribution locally without retagging.
SKILL_VERSION="${SKILL_VERSION_OVERRIDE:-0.8.0}"
SKILL_VERSION="${SKILL_VERSION_OVERRIDE:-0.9.0}"

# Attribution: env var > skill default. Same value is sent as the CLI's
# `--client-source` flag (Tier 2) or the curl `X-Client-Source` header
Expand Down
Loading
Loading