cloudflare/pull-requests
Describes how to write pull/merge requests. Use when asked to write or edit a pull request or merge request description. This skill is not relevant to commit messages.
npx skills add https://github.com/cloudflare/computer --skill pull-requests
A good pull request description is a Markdown document that tells the story of the accompanying git diff. It is intended for human consumption and should use plain language, read clearly and be easy to follow.
Use this skill any time you are tasked with creating a pull request on GitHub. The output will be a markdown document that follows the style guide and meets the accompanying verification.
A good pull request tells the story of the change and is intended to add color and context that is not or cannot be conveyed in the source code.
It should aim to be concise and use paragraphs and prose where appropriate rather than bullet points to improve readability and tell the story. Bullet points can be used for lists when semantically appropriate.
Code examples and diagrams (using mermaid) are preferred over prose to communicate your message.
It should use the following structure and include a paragraph on each topic.
to run locally.
Any sections that are not relevant should be omitted.
It is important to follow these rules when writing a pull request description.
Good: Clear
> We've updated the readFile() method to support streaming data so that the caller can read a file without buffering content into memory.
Bad: Verbose and technical jargon
> The readFile() function has an overload that when used returns a ReadableStream() object that emits chunks of UInt8Array type that can be used by the caller to stream bytes instead of base64 strings which are held in memory.
Good:
> The daemon now flushes pending writes before it tears down the mount.
Bad:
> The daemon now performs a synchronous fsync barrier against the underlying inode cache before invoking the FUSE unmount ioctl.
Good:
> We've updated the durable object (DO) to use RPC to reduce the time-to-first-byte (TTFB)
Bad:
> We've updated the DO to use RPC to reduce TTFB.
Describe what the code cannot. Architecture, design decisions, important trade-offs are the important details. Do not attempt to describe what the code is doing, the code itself can do that.
Good:
> This change extends the same call site to accept a name option. When set, the SDK provisions a named Cloudflare Tunnel under a zone the user controls and binds <name>.<zone> to the local port. Quick and named tunnels share the same entry point, the same TunnelInfo shape (now a discriminated union keyed on name), and the same destroy() semantics
Bad:
> This change extends tunnels.ts to update the get() method to accept a name option { name: "bill" }. When set, the SDK provisions a named Cloudflare Tunnel via cloudflared running via Bun.spawn() under a zone the user controls and binds <name>.<zone> to the local port. Quick and named tunnels share the same entry point sandbox.tunnels, the same TunnelInfo shape (now a discriminated union keyed on name NamedTunnelInfo | QuickTunnelInfo), and the same destroy() semantics.
e.g. color instead of colour.
Good:
> Further work will be required to update the remaining file methods to support streaming data.
Bad:
> Streaming in writeFile() will be implemented as part of the P2 plan to update the remaining methods.
Good:
> Further work will be required to update the remaining file methods to support streaming data.
Bad:
> The plan for the writeFile() changes as detailed in P2 in PLAN.md
Format the pull request using Github flavored markdown, do not use hard line breaks. Use US English spelling.
<detail> elements to hide verbose code examples or log output.| Anti-Pattern | Problem | Fix |
| --------------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| Including lists of code changes | The description is always accompanied by a diff there is no need to include a list of file changes. | Remove the list and include any relevant filenames as part of the implementation overview. |
| Overuse of headings | Makes the description overly verbose. It is intended to be short and concise. | Remove the headings in favor of sequential paragraphs. Use bold characters if a section is absolutely needed. |
| Referencing agent conversation or files | The reviewer has no context about these conversations so they are irrelevant. | Ensure the context is covered in the pull request and the text is comprehensible on it's own. |
After completing any pull request description:
Review the content and ask "can this be shorter?". Then make it shorter. Do this twice. Use code blocks and diagrams where appropriate to simplify prose.
Finally, ensure the folowing requirements are met:
req.fetch() or MyClass.Take cloudflare/pull-requests from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.