Skip to content

feat: add listing metadata for plugin and skill directories - #13

Open
z4o4z wants to merge 1 commit into
evgeny/docs-no-loggingfrom
evgeny/directory-listings
Open

z4o4z wants to merge 1 commit into
evgeny/docs-no-loggingfrom
evgeny/directory-listings

Conversation

@z4o4z

@z4o4z z4o4z commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

This adds the metadata that six directories read, so the plugin can be submitted. Nothing is submitted or published here. It is stacked on #12 and cannot merge before it, because the plugin README describes what the docs server records with logging=off. Merge order: #14, then #12, then this PR.

Blockers before any submission

  1. Icon. There is no official icon file, so this PR sets no icon or logo field. We need a square PNG, 512 to 2048 px, under 2 MB. Anthropic's portal may take the icon only from the first save or submission, so add it before anyone opens the portal. OpenAI and Codex also require logo and composerIcon.
  2. A published release. awesome-copilot reviews a release tag and a commit SHA, not a branch.
  3. feat: stop logging docs questions from package connections #12 and voiceflow/voiceflow-website#617. #617 adds logging=off to the docs server. It is approved and waiting to be deployed. feat: stop logging docs questions from package connections #12 and this PR wait for that deploy.
  4. Docs tools on the account MCP, before the OpenAI submission only. The OpenAI listing attaches mcp.voiceflow.com as its only server, and the server cannot change after the first submission. Today it has no docs tool, so ChatGPT and Codex users from that listing would get no docs MCP. The account server team adds a few read-only vf_docs_* tools that call the docs MCP with logging=off and pass on no user, workspace, or token. Other directories do not wait for this.

Decisions for the reviewer

MCP Registry names. A published name is hard to change.

  • Recommended: com.voiceflow/voiceflow for the account server and com.voiceflow/knowledge for the docs server.
  • Alternative: com.voiceflow/account and com.voiceflow/docs.
  • Trade-off: the recommended names match what the docs call the servers. The alternatives say more plainly what each one is for.

Registry versions. I used 3.0.0 for the account server, to match its v3 tools, and 2.1.2 for the docs server, the version it reports today. Each later publish needs a new version.

Support URL. No Voiceflow support page answers 200: /support and /docs/support return 404. I used this repository's SUPPORT.md, which routes to issues and to support@voiceflow.com. OpenAI requires a support URL for MCP review.

The docs registry entry has no logging=off. People who add the server from the registry are treated like people who add it by hand. The docs server logs their requests in full, and its tools require why.

What changes

Directory What it reads Change
Anthropic .claude-plugin/plugin.json and a README in the plugin folder New voiceflow/README.md. Manifest adds displayName, homepage, repository, keywords, documentationUrl, supportUrl, privacyPolicyUrl, termsOfServiceUrl
OpenAI Root plugin.json, extensions.com.openai. It ignores .codex-plugin/plugin.json when that object exists Category Developer Tools. Adds websiteURL, supportURL, privacyPolicyURL, termsOfServiceURL, defaultPrompt, capabilities, and onboardingSkill set to voiceflow-setup. The marketplace entry gets category
Codex format .codex-plugin/plugin.json Same interface at the root and onboardingSkill under extensions.com.openai
Cursor .cursor-plugin/plugin.json Adds homepage, repository, keywords
awesome-copilot Root plugin.json and the plugin README Keywords are lowercase and hyphenated
skills.sh skills.sh.json at the repo root paths: ["./voiceflow/skills"]
MCP Registry server.json per server mcp-registry/voiceflow/ and mcp-registry/knowledge/, not packaged. mcp-publisher was not run

The README says what the plugin runs, sends, and fetches. It covers the CLI download from the official release with pinned checksums, and OAuth with workspace read and write access for https://mcp.voiceflow.com/mcp?version=3. For the docs MCP, it says the request carries the question. With logging=off the docs server writes only an anonymous count line, with caller public, and never logs the question, client name, or session. Vercel request logs still hold the URL, IP, user agent, status, and timing, but not the question. A connection added by hand is logged as before and also carries the version, skill, and stage tag. The README links the license, support, privacy policy, and terms.

validate.py now checks that the manifests share links, keywords, category, and onboarding skill. It also checks the OpenAI length limits, that the README has at least 40 words outside code blocks, the skills.sh.json paths, and that the registry entries point at the two server URLs. An icon field passes only when its file exists. The build ships the README, and the standalone skill installer ignores it because it copies only voiceflow/skills.

All URLs returned 200 with curl -sIL on 2026-11-12: https://www.voiceflow.com, /docs, /privacy, /legal/terms (/terms redirects there), /docs/mcp/knowledge, and the repository and SUPPORT.md links.

Sources

Not verified

  • Anthropic's portal Validate and security scan. They need a portal sign-in.
  • The OpenAI dashboard upload checks.
  • npx skills add. I did not run third-party npm code; the format comes from the skills CLI docs.
  • awesome-copilot intake and vally lint.
  • mcp-publisher validate. Publishing also needs DNS or HTTP proof for voiceflow.com.
  • Cursor marketplace discovery.

Open questions

  • Anthropic asks that a plugin's remote MCP server you run also be submitted as a connector. The docs MCP is bundled. Should we submit it as a connector too?
  • capabilities is ["Read", "Write"], as in OpenAI's example. Do we want task labels instead?

Changelog and version

The four changelog lines sit under ## Unreleased. This PR changes no version field. When it merges after #14 and #12, the release bot sets 1.2.0.

This branch is rebased onto the new #12. The README, the MCP Registry entry for the account server, and its validate.py check all use main's account MCP pin, ?version=3, so registry users get the same v3 tool names as the plugin.

Verification

  • python3 scripts/validate.py: passed.
  • python3 -m unittest discover -s tests -v: 139 tests ran, 138 passed, 1 skipped. New tests cover listing drift, prompt and description limits, a missing icon file, registry URLs, skills.sh.json, and README word counting.
  • python3 scripts/build.py: passed. The archive includes voiceflow/README.md.
  • The ci: bump plugin versions from conventional PR titles #14 title rules, run locally against feat: stop logging docs questions from package connections #12: no problems, no version edits, and four new lines under ## Unreleased.
  • From the first version of this PR, not rerun after the rebase: claude plugin validate ./voiceflow and claude plugin validate . (Claude Code 2.1.322) passed, with the missing icon as the only directory warning. python3 scripts/verify_hosts.py installed the plugin with the new manifests in disposable Codex 0.165.0 and Claude Code configs.
  • Not run: python3 scripts/scan_secrets.py, because Gitleaks is not installed locally; CI runs it.

🤖 Generated with Claude Code

z4o4z commented Nov 13, 2026

Copy link
Copy Markdown
Member Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

Add what the Anthropic directory, the OpenAI Plugin Directory, Cursor,
awesome-copilot, skills.sh, and the MCP Registry read:

- voiceflow/README.md, shipped in the package, explains setup, the
  services the plugin contacts, and what each one receives.
- The Claude manifest gains displayName, homepage, repository, keywords,
  and the directory link fields. The portable manifest's OpenAI interface
  moves to the Developer Tools category and gains links, starter prompts,
  capabilities, and voiceflow-setup as the onboarding skill. The Codex and
  Cursor manifests match it.
- skills.sh.json points the skills CLI at voiceflow/skills.
- mcp-registry/ holds unpublished entries for the account and docs servers.

validate.py checks that the manifests agree, the listing limits hold, the
README has 40+ prose words, and the registry entries name the right URLs.
No icon is added; the listing icon is still a blocker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@z4o4z
z4o4z force-pushed the evgeny/directory-listings branch from 8cbd555 to 3f2a3d1 Compare November 13, 2026 20:43
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.

1 participant