Blocking private IPs on the submitted URL covers one request out of many. The second layer, the caching asymmetry that beats DNS rebinding, and six IPv6 traps.
Two ways to turn Markdown into a PDF from CI, what installing Chromium on a runner really costs, and the zero-dependency composite action pattern.
Listing a GitHub Action: the checkbox that stays locked, the tag selection that silently resets, and the naming rules that reject more than you expect.
Chromium cuts code blocks, tables and headings in half at page boundaries. The print CSS that fixes it, and the rule that silently breaks Markdown tables.
Shipping an MCP server is not the same as being discoverable. The well-known files, Link headers and content negotiation that agent tooling checks for.
Add one MCP server and your AI agent can turn a conversation into a formatted PDF without you copying Markdown anywhere.