一键导入
suede-mcp-qa
Catch MCP drift before release: skill catalogs, tool and resource schemas, prompts, install paths, JSON-RPC behavior, and docs alignment.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Catch MCP drift before release: skill catalogs, tool and resource schemas, prompts, install paths, JSON-RPC behavior, and docs alignment.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
The pack's contract/customer-service negotiator, proven outside a repo: scans an Amazon account for restocking fees, short refunds, and forgotten or overpriced digital subscriptions (Prime Video Channels like Britbox/Starz/AMC+/Paramount+, Audible membership, Kindle Unlimited, Prime itself) — money Amazon is quietly holding or billing that the owner never noticed — then drives Amazon's live chat to get fees waived, refunds issued, or unused subscriptions canceled and the last charge refunded. Recovered $448.31 in one sitting — including a full refund on an item Amazon had already denied once, with no return required. Use this whenever the user mentions Amazon returns, restocking fees, an Amazon refund that looks short, a forgotten subscription (Britbox, Starz, Audible, Kindle Unlimited, etc.), disputing an Amazon charge, checking whether a return was fully refunded, auditing recurring Amazon charges, or asks something like 'did I get charged for that return', 'am I still paying for Britbox', or 'is Amazon sti
The pack's contract negotiator, generalized beyond Amazon: a recurring-charge auditor that finds forgotten, unused, or overpriced subscriptions across any service (Netflix, Spotify, Hulu, Disney+, gym memberships, SaaS tools, news sites, app subscriptions) and either cancels them directly or negotiates a refund/waiver through that service's own support channel. Complements amazon-returns-recovery, which stays scoped to Amazon returns/restocking fees and Amazon-billed subscriptions (Prime Video Channels, Audible, Kindle Unlimited) — this skill covers everything billed outside Amazon: direct-bill streaming and software, App Store and Google Play subscriptions, and PayPal-billed recurring payments. Use this whenever the user wants to audit recurring charges generally, asks what subscriptions they're paying for, mentions a specific non-Amazon subscription (Netflix, Spotify, a gym, a SaaS tool, etc.), wants to find and cancel unused subscriptions, or asks something like 'what am I still paying for', 'find my subsc
Umbrella workflow for 25 public skills: copy, design, code review, SEO, launch packaging, MCP QA, iOS conversion, and creator workflows.
Claude-directed parallel OpenAI Codex CLI worker fleet for bulk generation. Use when a job is high-volume, well-specified, and splits into independent worker-sized tasks (content batches, test generation, bulk refactors) and Codex CLI is installed and logged in. Claude decomposes, briefs, spawns codex exec runs in parallel, and review-gates every output. NOT FOR: multi-lane Claude agents coordinating one complex change (use suede-agent-teams); low-volume, judgment-dense copy Claude should write itself (use suede-copy or johnny-suede-write).
Design and write polished product surfaces people understand fast: landing pages, dashboards, campaigns, restyles, UI copy, and visual QA.
Make Suede interfaces feel intentional: tokens, color, components, type, motion, dark mode, and visual QA for shipped screens.
| name | suede-mcp-qa |
| description | Catch MCP drift before release: skill catalogs, tool and resource schemas, prompts, install paths, JSON-RPC behavior, and docs alignment. |
Use this skill when a Suede MCP server or MCP docs surface changes.
Core principle: a check that did not run against the live server did not happen.
initialize, ping, tools/list, tools/call,
resources/list, resources/read, prompts/list, and prompts/get when
supported.mcp/suede-skills-mcp.mjs is the only server this skill QAs. Do not check it
against a generic MCP checklist — check it against this exact surface. Read
mcp/catalog.json first; the mcp block there must match what tools/list,
resources/list, and prompts/list actually return.
7 tools: list_suede_skills, get_suede_skill, suede_install_options,
suede_copy_seo_audit, suede_visibility_grade, suede_code_grade,
suede_qa_checklist.
6 resources: suede://catalog, suede://plugins, suede://copy-seo-audit,
suede://visibility-grade, suede://code-grade, suede://qa-checklist.
5 prompts: suede-copy-seo-audit, suede-plugin-install,
suede-visibility-grade, suede-code-grade, suede-full-qa.
If any count drifts, the source (resources/tools/prompts arrays in
suede-skills-mcp.mjs) is ground truth, not this list — re-run tools/list,
resources/list, and prompts/list and update both this section and
mcp/catalog.json's mcp block to match.
Run each from the repo root. The server speaks newline-delimited JSON-RPC over
stdio — one line in, one line out. --profile all exposes the full catalog;
swap in workflow, artist, or creator to test profile scoping.
initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{},"resources":{},"prompts":{}},"serverInfo":{"name":"suede-skills-mcp","version":"0.2.0"},"instructions":"Use this MCP when Suede skill discovery, install guidance, visibility grading, code grading, SEO/AEO/AI EO copy audits, or QA checklists will materially help the task."}}
tools/list
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | node mcp/suede-skills-mcp.mjs --profile all
Returns a tools array of exactly the 7 tools named above, each with
name, title, description, and inputSchema. Confirm the count and every
name — a missing or renamed tool here is a High failure per Checks item 3.
tools/call — successful call
echo '{"jsonrpc":"2.0","id":9,"method":"tools/call","params":{"name":"suede_install_options","arguments":{"surface":"mcp"}}}' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":9,"result":{"content":[{"type":"text","text":"\n## MCP option\nUse the MCP when structured skill discovery, install options, visibility grading, code grading, SEO/AEO/AI EO copy audits, or QA checklists materially help the task.\n- Suede Workflow Skills MCP server: `suede_workflow_mcp`\n- Suede Creator Skills MCP server: `suede_creator_mcp`"}],"structuredContent":{"plugins":[{"...":"truncated — full plugin objects from catalog.json"}],"surface":"mcp"}}}
Every successful tools/call returns both content (text for a model to
read) and structuredContent (the same data as structured JSON). Check both
are present, not just one.
resources/read — successful read
echo '{"jsonrpc":"2.0","id":4,"method":"resources/read","params":{"uri":"suede://plugins"}}' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":4,"result":{"contents":[{"uri":"suede://plugins","mimeType":"text/markdown","text":"## Public Codex skill install\n- Suede Workflow Skills: `python3 ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py --repo JasonColapietro/suede-creator-skills --path skills/suede-workflow-skills`\n- Suede Creator Skills: `python3 ...` (truncated — full text continues with local plugin and Claude Code install sections)"}]}}
Negative path — unknown tool name
echo '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"not_a_real_tool","arguments":{}}}' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":5,"error":{"code":-32602,"message":"Unknown tool: not_a_real_tool"}}
Negative path — unknown resource URI
echo '{"jsonrpc":"2.0","id":8,"method":"resources/read","params":{"uri":"suede://not-a-real-resource"}}' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":8,"error":{"code":-32602,"message":"Unknown resource URI: suede://not-a-real-resource"}}
Negative path — unsupported method
echo '{"jsonrpc":"2.0","id":10,"method":"totally/bogus","params":{}}' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":10,"error":{"code":-32601,"message":"Unsupported MCP method: totally/bogus"}}
Negative path — malformed JSON
printf '{"jsonrpc":"2.0","id":6,"method":"tools/list", not valid json here}\n' | node mcp/suede-skills-mcp.mjs --profile all
{"jsonrpc":"2.0","id":null,"error":{"code":-32700,"message":"Parse error"}}
id comes back null on a parse error — the server never got far enough to
read the request's id. Do not flag a null id here as broken; flag it if
any other error response returns null when the request had a real id.
Full JSON-RPC error code map observed from this server: -32700 parse error,
-32600 invalid request (missing/bad method, or top-level jsonrpc isn't
"2.0"), -32601 unsupported method, -32602 unknown tool name / unknown
resource URI / unknown prompt name. Any other code, or a raw stack trace
instead of a JSON-RPC error object, is a High failure.
| Failure type | Severity | Action |
|---|---|---|
| Server fails to start | Critical | Stop. Report startup error verbatim. |
tools/list returns empty | Critical | Stop. The MCP is non-functional. |
| Listed skill folder missing | High | Flag each missing folder. Continue checking others. |
| Malformed JSON-RPC response | High | Report the raw response. Flag as broken. |
| Install command leads with local-only path | High | Flag. Install output must lead with public GitHub route. |
| Docs/catalog language mismatch | Medium | List each mismatch. Flag as hold-with-caveat. |
| Tool implemented but not in catalog | Low | Flag as undocumented. Not a blocker. |
Ship gate rules:
Server:
Commands run:
Tools checked:
Resources checked:
Prompts checked:
Install output:
Failures:
Fixes:
Ship gate: ship | ship-with-caveats | hold
After QA:
mcp/catalog.json and re-run steps 2 and 7