Repository navigation
Conversation
Add an experimental docker-docs skill that answers questions about any Docker product from current, cited Docker Docs pages. It searches with the search_docker_docs MCP tool when available and otherwise falls back to docs.docker.com/llms.txt and per-page Markdown. A product map covers aliases and top-level sections across Sandboxes (local and cloud), DHI, Docker Agent, Model Runner, MCP Toolkit, and admin and billing docs. Register the remote Docker docs MCP server in the Claude Code, Codex, Cursor, and Copilot CLI plugin manifests through plugin-mcp.json, and inline in gemini-extension.json. The file is not named .mcp.json so clients don't load it as project config for this repository. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What I did
Adds an experimental
docker-docsskill and registers the remote Docker docs MCP server (https://ai-backend-service.docker.com/mcp) in the plugin and extension manifests.Important
Depends on docker/gordon#2603 being deployed. The skill and its checks refer to the tool as
search_docker_docs; the live server still exposes it asknowledge_baseuntil that PR ships. Keep this as a draft until then.Skill:
skills/docker-docs/sbx, local and cloud, Sandboxes API/SDK), the Agentic Platform, DHI, Docker Agent, Model Runner, MCP Toolkit, and accounts, admin and billing.search_docker_docsMCP tool when it is available. Otherwise it falls back todocs.docker.com/llms.txt, then a local search of thellms-full.txtpage index, then a page fetched as Markdown (a.mdURL orAccept: text/markdown). A general web search limited tosite:docs.docker.comis the last resort.references/product-map.mdlists aliases and top-level docs sections only, to keep drift low.references/mcp-setup.mdcovers manual setup and troubleshooting, and the skill reads it only when the user asks.checks/verification.md(manual runbook against the live endpoints),evals/docker-docs.md,dd-*eval checks, a catalog entry (0.1.0, experimental, Cross-Product) and CODEOWNERS rules.MCP server registration
.claude-plugin/plugin.json→plugin-mcp.json.codex-plugin/plugin.json→plugin-mcp.json, plusagents/openai.yamltool dependency.github/plugin/plugin.json→plugin-mcp.jsonsource: pluginhttpUrlingemini-extension.json.cursor-plugin/plugin.json→plugin-mcp.jsonThe file is called
plugin-mcp.jsonrather than.mcp.jsonon purpose. The plugin root is the repository root, so a.mcp.jsonwould also be loaded as project MCP config by Claude Code and Copilot CLI for anyone working in this repo.The skills CLI, Docker Sandboxes, Docker Agent and manual-copy installs get the skill only, not the server. For those, the skill uses the
llms.txtand Markdown fallback.Eval simulation
I ran the five prompts in
evals/docker-docs.mdwith Claude Code (Opus 5.5) in two modes: with the docs MCP server connected, and without it, which forces the fallback. Because docker/gordon#2603 hasn't deployed yet, the runs used a scratch copy of the skill with the tool name set back toknowledge_base. Tools were limited to read-only.In prompts 2-4, the agent searched or used the index, fetched pages as Markdown, and cited them. It also said when the docs don't settle something, such as Business-plan credits for cloud compute. The fallback runs searched
llms-full.txtfrom a temp file and read only small slices.Prompt 1 is evidence for this skill. In both modes the agent routed to
docker-sandboxes-network-credentialsand answered from that skill's bundled guidance without checking the docs. Compared with the current local policy docs, that answer is wrong on two points:sbx policy init deny-allwould cut the agent off from its own model API. The docs say built-in agent kits add per-sandbox allow rules even under Locked Down (deny-all).Bundled CLI guidance goes stale between releases. Retrieving from the docs doesn't have that problem, as prompts 2-4 show.
Follow-ups to consider
sbxskills, in favor ofdocker-docs. Keep only workflow and safety guidance the docs don't cover, such asdocker-destructive-guardrails. This PR doesn't change that routing:docker-docsdefers to a more specific skill when one exists, which is why prompt 1 never consulted the docs.docker-sandboxes-network-credentialsin the meantime.docs.docker.com/llms.txtadvertiseshttps://mcp-docs.docker.com/mcp, which only returnsllms.txtand has no search tool. It may be worth pointing it at this server.@docker/gordononly. A docs team may also want ownership.Checklist
taskpasses locally. The two PR-only checks,check_version_bumps.pyandcheck_dco.py, were run directly against the merge base and both pass.skills/<id>/, I increased that skill's version in bothcatalog.yamland itsskill.yaml. This is a new skill with matching initial version 0.1.0.🤖 Generated with Claude Code