Submission QA — verify by executing

SkillDev tools

Verification methodology and gate checklist for the tdmcp Connectors Directory submission — run the docs build, build and inspect the .mcpb bundle, sweep for stale .dxt references, and cross-check the form-answer draft against the real requirements. Use to validate the submission package before a human submits, by executing commands and quoting evidence, not by trusting that work was done.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Submission QA — verify by executing skill

What this skill tells your AI

The instructions your AI receives, as published by pantani/tdmcp in .agents/skills/submission-qa/SKILL.md and read by ahel’s review.

The cost of a miss is a ~2-week rejection cycle. So every gate is checked by running something and quoting the output, never by reading a builder's claim. "Looks complete" is not a result; a command transcript is.

Gate checklist

Produce a table gate | PASS/FAIL | evidence. Gates:

GateHow to verify
Privacy page exists + linkedOpen the page file(s); confirm the nav entry in docs/.vitepress/config.ts points to its clean URL. Confirm the page actually states the data-handling story (not a stub).
Docs buildnpm run docs:build exits 0. VitePress fails on dead internal links, so this also catches a bad nav link.
Bundle buildsnpm run build then npm run build:mcpb (or the renamed script). Confirm tdmcp.mcpb is emitted.
Bundle is validunzip -l tdmcp.mcpb shows manifest.json at root + dist/. If npx --yes @anthropic-ai/mcpb validate exists, run it on the manifest and capture the result.
No stale refsgrep -rn "\.dxt|build:dxt" docs/ scripts/ README.md package.json .github/ 2>/dev/null (exclude dist/, node_modules/). Every hit must be an intentional legacy note.
Annotations intact`grep -rEo "readOnlyHint
Form completenessEvery field in 00_submission-spec.md's field map has an answer in 02_form-answers.md or an explicit NEEDS HUMAN INPUT. List the human inputs.
Manifest sanenode -e "JSON.parse(require('fs').readFileSync('dxt/manifest.json'))" parses; manifest_version, name, version, server.entry_point present.

Report format

Write _workspace/03_qa-report.md:

  1. Gate table (above) with command output as evidence.
  2. Blocking issues — anything FAIL. Each with the exact file:line or command and what the owner (docs-author / bundle-engineer) must change.
  3. Non-blocking nits — cosmetic / nice-to-have.
  4. Needs human before submit — every NEEDS HUMAN INPUT (support email, privacy contact, test account, new release to publish the .mcpb asset).

Principles

  • You need to run scripts, so operate with general-purpose capability, not a read-only profile.
  • Incremental: when a gate fails, report it precisely and (on re-run) re-execute only the affected check rather than the whole suite.
  • Don't fix. Independent verification is your value — hand fixes back to the owning agent. If you fix and verify your own fix, the check is no longer independent.
  • Cross the boundary. The high-value check isn't "does the file exist" — it's "does the form answer match what the page/manifest/repo actually says". E.g. the privacy URL in 02_form-answers.md must resolve to the page docs-author actually created; the tool list in the form must match src/tools/**.

Signals

GitHub stars
41
Forks
9
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
submission-qa
Source
github.com/pantani/tdmcp