Creates and updates GitHub pull requests for cloudflare-docs changes. Load when asked to open, create, submit, update, edit, or write a title or description for a PR. Covers title conventions, PR body structure, and the documentation checklist template.
90
88%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Use this skill when creating a GitHub pull request for changes to this repository, or when editing an existing PR's title or description.
gh CLIThis skill uses the gh CLI throughout. If a gh command fails because it is not installed or not authenticated, fall back to providing the PR title and body clearly so the user can copy-paste them, along with the relevant GitHub URL:
https://github.com/cloudflare/cloudflare-docs/compare/production...<branch> (get branch from git branch --show-current)https://github.com/cloudflare/cloudflare-docs/pull/<number> — instruct them to select Edit on the description.When asked to update or edit an existing PR description (or title), follow these rules strictly — then stop. Do not proceed to the "Creating a new PR" steps below.
gh pr view <number> --json title,body before making any changes.gh pr edit <number> --title "..."gh pr edit <number> --body-file /tmp/pr-body.md and clean up with rm /tmp/pr-body.md. Do not use --body "..." — shell quoting mangles backticks and other Markdown formatting.Follow Steps 1–4 below only when creating a new PR (or when an existing PR has an empty description).
Run --stat first to understand the scope without blowing up context:
git log --oneline production..HEAD
git diff production...HEAD --statIf the stat output shows more than ~20 files changed, do not run the full diff. Instead, read specific files that are unclear from the stat output. For smaller changesets (under ~20 files), the full diff is fine:
git diff production...HEADproductionThis repo uses production as the default branch, not main. Always use --base production when creating PRs. Contributors from other repos often expect main — this is intentional.
For content changes, the dominant convention is product brackets:
[Product] Short descriptionFor changes spanning multiple products:
[Product1, Product2] Short descriptionFor non-content changes (tooling, CI, config, components, worker code, repo maintenance), use a conventional commit prefix instead:
chore: Short description
fix: Short description
feat: Short descriptionDo not ask the author what product bracket to use — infer it from the changed file paths.
src/content/docs/{slug}/ and src/content/partials/{slug}/ map directly to a product. Read the title field from src/content/docs/{slug}/index.mdx to get the display name, then strip any "Cloudflare " prefix to get the bracket (e.g. title "Cloudflare Workers" → [Workers]).src/content/changelog/{slug}/ maps the same way — use the product bracket, not [Changelog]. Use [Changelog] only when the PR exclusively adds or updates changelog entries across multiple products.[Workers], [AI Search], [Zero Trust][DO] for Durable Objects, [KV], [ZT] for Zero Trust, [R2], [D1][AI Search] Add hybrid search and boosting configuration docs
[Hyperdrive, Workers VPC] Document TCP services, TLS cert verification
[Browser Rendering] Add Wrangler CLI commands documentation
[Billing] Restructure billing docs into intent-based sections
[DMARC Management] ELI5
[Client-side security] ELI5 updates
[DNS, Fundamentals] Onboarding review and add video
[Style Guide] Adding products frontmatter to all visible examples
[Workers] Document Durable Object Facets
[Changelog] CDP + WebMCP changelog entriesUse the [Product] bracket format as your default for content changes. Use conventional commit prefixes for non-content changes.
Read the PR template from the repository before writing the body:
cat .github/pull_request_template.mdUse that file as the exact base for the PR body. Do not rely on any hardcoded version of the template — always read it fresh from disk in case it has changed.
Summary
Write a short explanation covering:
Keep it factual. Do not repeat what the checklist items say. For small, focused PRs 1-2 sentences is enough. For larger PRs touching many files or multiple areas, a longer description is appropriate — use tables, lists, or code blocks over paragraphs of prose where it makes the summary easier to scan.
Good examples:
Small, focused PR:
Adds a caution note for the
activeattribute mapping behavior in SCIM provisioning.Fixes https://github.com/cloudflare/cloudflare-docs/issues/1234
Medium PR:
Updates the Access policies index to reflect the new policy grouping UI. Fixes stale screenshots and outdated step ordering.
Larger PR spanning multiple areas:
Restructures the billing docs into intent-based sections to make it easier for users to find pricing and usage information.
Before After billing/usage.mdxbilling/usage-and-limits.mdxbilling/limits.mdx(merged into above) billing/overview.mdxbilling/index.mdx
- Updated all internal links pointing to moved pages
- Added redirects for all renamed files
Screenshots (optional)
Skip this section entirely unless the PR changes something visual — new pages, rearranged navigation, updated UI steps, or modified images. Do not leave the empty comment placeholder if screenshots are not needed.
If the PR does change something visual, include the section with a <!-- TODO: add screenshots before requesting review --> comment so the human knows to fill it in before the PR is ready for review.
Documentation checklist
Go through each item and decide whether it applies:
Changelog entry — Required if the PR documents a new feature, enhancement, or noteworthy change to a Cloudflare product. Remove this item if the PR is a fix, typo correction, internal restructure, or style update.
Style guide adherence — Check the diff for files under src/content/ or authored component files (.mdx, .astro, .css). Keep this item only if at least one such file was added or modified. Remove this item if the PR exclusively changes source code (.ts, .tsx, .js), tooling, CI, configuration files, agent skills, or any other non-content assets — even if those files live under src/ or happen to be Markdown.
Issue opened for larger changes — Keep this item if the PR adds a new page, restructures a section, or addresses known inaccuracies. Remove it for small focused changes.
Redirects for renamed/moved files — Keep this item if any .mdx files were renamed, moved, or deleted. Remove it if no files changed location.
Remove individual checklist items that genuinely do not apply. Do not leave unchecked items that are irrelevant — they create noise for reviewers. Only remove the entire Documentation checklist section if none of the items apply (e.g. a pure CI or tooling change). If even one item applies, keep the section and remove only the irrelevant items.
These patterns create review friction and will result in the PR being sent back:
Build the PR body by starting from the template read in Step 3 — replace the summary placeholder comment with your actual summary, remove checklist items that do not apply, and handle the screenshots section per the guidance above.
Important: Do not pass the body via --body "$BODY" or --body '...' — shell quoting mangles backticks and other Markdown formatting. Instead, write the body to a temporary file and use --body-file:
# 1. Write the PR body to a temp file using the Write tool (not echo/cat)
# 2. Create the PR referencing that file
gh pr create --base production --draft --title "[Product] short description" --body-file /tmp/pr-body.md
# 3. Clean up
rm /tmp/pr-body.mdAll PRs MUST be created as drafts. Most contributors should not land straight into the review queue — the author should review the deploy preview first and mark the PR ready when it looks correct.
Share the PR URL and let the user know it has been created as a draft — they should verify the changes and deploy preview look correct, then mark it as ready for review when they are satisfied. Do not push follow-up commits, do not request reviewers, do not make further edits to the PR unprompted. The human takes it from here.
9a170b9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.