SC-9 Plugin / marketplace / MCP / secret tab UIs #631

Closed
opened 2026-05-01 10:35:22 +00:00 by claude-desktop · 0 comments
Collaborator

User story

As an operator, I want form-style editors for plugins, marketplaces, MCP servers, and secrets that share the same scope-ladder + reset-to-factory + revision-history affordances as the skills editor, so that I can manage every non-markdown agent-config artifact from one consistent surface.

Acceptance criteria

Plugins tab

  • Scope-filterable list of plugin_binding rows. Columns: plugin name, source marketplace, scope chip, enabled toggle.
  • Row action menu: Reset (deletes the row at the active scope), Fork to ▾ (instance / agent_type / global), Edit (toggle enabled, change marketplace ref).
  • Add / remove buttons. New rows write under the currently-filtered scope.

Marketplaces tab

  • Scope-filterable list of plugin_marketplace rows. Columns: name, source kind, source URL, scope chip.
  • Same action menu shape as Plugins.

MCP servers tab

  • Card-style list. Each card surfaces name, transport, scope chip, and a one-line summary of the rendered command.
  • Edit modal exposes: name, transport (radio: stdio / http / sse), command + args (chip list), env (key-value pairs with ${SECRET:NAME} autocomplete pulling from the secrets-name list — never plain values shown after save), url (http/sse only).
  • Validate transport-specific shapes client-side (stdio requires command + args; http/sse requires url).

Secrets tab

  • List of secret names + descriptions + last-rotated. Add / Rotate / Delete actions.
  • Add / edit forms always treat value as write-only — read view shows ••••; only POST/PUT carry the plaintext.
  • View access log link on each row opens a paginated viewer.

Wiring

  • All forms call the SC-7 routes; mutations refresh the list via TanStack Query invalidation; the resolver-driven render gets the new state on the next dispatch.

Tests

  • One smoke test per tab covering create / edit / delete loops (vitest with happy-dom or Playwright — match the existing apps/web pattern).

Out of scope

  • Bulk import / export of secrets.
  • Diff viewer for plugin / marketplace / MCP changes (revision viewer covers it for now).
  • Per-instance affordances are deferred to SC-11; the tab forms must still accept the instance scope, but the "Customize this instance" deep-link comes in that story.

References

  • specs/agent-config-customization.md §Dashboard surface and §Story SC-9
  • apps/web/CLAUDE.md — primitives, a11y, density
  • Depends on SC-7 (routes) + SC-6 (secrets surface for the secrets tab).
## User story As an operator, I want form-style editors for plugins, marketplaces, MCP servers, and secrets that share the same scope-ladder + reset-to-factory + revision-history affordances as the skills editor, so that I can manage every non-markdown agent-config artifact from one consistent surface. ## Acceptance criteria ### Plugins tab - [ ] Scope-filterable list of `plugin_binding` rows. Columns: plugin name, source marketplace, scope chip, enabled toggle. - [ ] Row action menu: `Reset` (deletes the row at the active scope), `Fork to ▾` (instance / agent_type / global), `Edit` (toggle enabled, change marketplace ref). - [ ] Add / remove buttons. New rows write under the currently-filtered scope. ### Marketplaces tab - [ ] Scope-filterable list of `plugin_marketplace` rows. Columns: name, source kind, source URL, scope chip. - [ ] Same action menu shape as Plugins. ### MCP servers tab - [ ] Card-style list. Each card surfaces name, transport, scope chip, and a one-line summary of the rendered command. - [ ] Edit modal exposes: `name`, `transport` (radio: stdio / http / sse), `command` + `args` (chip list), `env` (key-value pairs with `${SECRET:NAME}` autocomplete pulling from the secrets-name list — never plain values shown after save), `url` (http/sse only). - [ ] Validate transport-specific shapes client-side (stdio requires command + args; http/sse requires url). ### Secrets tab - [ ] List of secret names + descriptions + last-rotated. `Add` / `Rotate` / `Delete` actions. - [ ] Add / edit forms always treat `value` as write-only — read view shows `••••`; only POST/PUT carry the plaintext. - [ ] `View access log` link on each row opens a paginated viewer. ### Wiring - [ ] All forms call the SC-7 routes; mutations refresh the list via TanStack Query invalidation; the resolver-driven render gets the new state on the next dispatch. ### Tests - [ ] One smoke test per tab covering create / edit / delete loops (vitest with happy-dom or Playwright — match the existing apps/web pattern). ## Out of scope - Bulk import / export of secrets. - Diff viewer for plugin / marketplace / MCP changes (revision viewer covers it for now). - Per-instance affordances are deferred to SC-11; the tab forms must still accept the instance scope, but the "Customize this instance" deep-link comes in that story. ## References - `specs/agent-config-customization.md` §Dashboard surface and §Story SC-9 - `apps/web/CLAUDE.md` — primitives, a11y, density - Depends on **SC-7** (routes) + **SC-6** (secrets surface for the secrets tab).
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks#631
No description provided.