Reviews pull requests for MCP server updates in the Dockyard repository. Use when reviewing PRs that update MCP server versions (spec.yaml changes), add new MCP servers, or modify security allowlists. Evaluates against ToolHive registry criteria including security, provenance, and quality.
This skill helps you review pull requests that update MCP server packages in the Dockyard repository. Dockyard automatically packages MCP servers into OCI container images using declarative spec.yaml configurations.
Use this skill when:
First, get the PR details and identify what changed:
mcp__github__pull_request_read with method get to get PR detailsmcp__github__pull_request_read with method get_files to see changed filesspec.yaml files in npx/, uvx/, or go/ directoriesFor each changed spec.yaml:
Identify the version bump type:
Review the release notes in the PR description (Renovate includes these)
Check for breaking changes that might affect:
spec.args)spec.env)If the PR adds or changes spec.env, verify:
security.mock_env, a separate mechanism used only for scanning)Check that all required CI checks pass:
Use mcp__github__pull_request_read with method get_status to check CI status
Required checks:
MCP Security Scan - Must pass (blocks merge if failed)Verify Provenance - Informational, check for regressionsBuild Containers - Must passTrivy Vulnerability Scan - Review findingsIf MCP Security Scan fails, check for:
spec.yamlWhen the MCP Security Scan fails, determine if issues are real security concerns or false positives before adding allowlist entries:
Get detailed scan output by running mcp-scanner directly:
uv tool run mcp-scanner stdio --stdio-command npx --stdio-arg "@package/name@version" --format raw
Examine the upstream source code to understand what's triggering the warning:
Analyze the semantic context:
If false positive, add allowlist with clear justification explaining WHY it's safe
See references/INVESTIGATING_SECURITY_ISSUES.md for detailed investigation procedures, issue code meanings, and examples of identifying false positives.
For new servers or major version updates, evaluate against ToolHive registry criteria:
Required Criteria:
Security Criteria:
Quality Criteria:
Use mcp__github__search_repositories or direct GitHub API calls to check:
If the spec.yaml includes provenance information:
repository_uri matches the actual sourcerepository_ref aligns with the version being installedIf the PR adds or modifies security.allowed_issues:
Verify each allowlist entry has:
Common acceptable allowlist reasons:
Red flags requiring extra scrutiny:
After completing the review, provide a structured summary:
## MCP Server Update Review: [Server Name]
### Change Summary
- **Package:** [package name]
- **Version:** [old version] → [new version]
- **Change Type:** [Patch/Minor/Major]
- **Protocol:** [npx/uvx/go]
### CI Status
- MCP Security Scan: [Pass/Fail/Pending]
- Provenance Verification: [Verified/Signatures/None]
- Container Build: [Pass/Fail/Pending]
- Vulnerability Scan: [Clean/Findings]
### Breaking Changes
[List any breaking changes from release notes]
### Security Considerations
[Any new security allowlist entries or concerns]
### Upstream Health (for major updates)
- License: [license type]
- Recent Activity: [active/stale]
- Open Issues: [count]
- Maintainer Response: [responsive/slow]
### Recommendation
[APPROVE / REQUEST_CHANGES / COMMENT]
[Justification for recommendation]
metadata:
name: "server-name" # Unique identifier
description: "..." # What the server does
protocol: "npx|uvx|go" # Package ecosystem
spec:
package: "package-name" # Registry package name
version: "x.y.z" # Exact version
args: # Optional CLI arguments
- "arg1"
env: # Optional env vars baked into the runtime image
SOME_VAR: "some-value"
provenance:
repository_uri: "https://..."
repository_ref: "refs/tags/..."
attestations:
available: true|false
verified: true|false
publisher:
kind: "GitHub"
repository: "owner/repo"
workflow: ".github/workflows/..."
security:
allowed_issues:
- code: "AITech-1.1|AITech-8.2|AITech-9.1|..."
reason: "Clear justification"
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer