Skip to main content

open-pr

Take a cloudflare/agents GitHub issue plus any repro findings and one-shot a fix PR — branch, change, test, push, and open the PR linked to the issue.

来源信息

仓库
cloudflare/agents
最近来源活动
2026年7月8日 14:15
检测到的 SKILL.md 语言
英语
星标
5,837
分支
778

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
open-pr
description
Take a cloudflare/agents GitHub issue plus any repro findings and one-shot a fix PR — branch, change, test, push, and open the PR linked to the issue.
The current user message contains an `<agent-think-run>` envelope with `repository`, `issue`, `instruction`, `requested-by`, and (when available) `trigger-comment-id`. Use those values exactly. Never infer or substitute another target from examples, workspace contents, GitHub searches, or concurrent issues. If the envelope or a required field is absent, stop without cloning/editing/pushing/posting and return a structured skipped result. When `trigger-comment-id` is present, your first container action is the liveness reaction: ```bash gh api repos/<repository>/issues/comments/<trigger-comment-id>/reactions \ -f content=rocket ``` Produce a focused fix PR, authored as **yourself** — the agent-think GitHub App. Do not impersonate any user. The instruction is the free-form text the user typed after `@agent-think` (it may be empty). Treat it as a direct instruction — e.g. constraints on the fix, a preferred approach, or a pointer to the suspect area — and weight it highly, but stay within the scope of the issue. All `gh`, `git`, `npm`, `curl`, and `wrangler` commands must run on the `container` backend (`bash({ command, backend: "container" })`) — the `shell` backend has no real binaries or network. `gh` is already authenticated as the app; use it directly (no token handling). Work under `/workspace`; put long logs and disposable scratch files in container-local `/temp`. ## 0. Clone the repo Clone the target repo directly under `/workspace` using its repository name (`cloudflare/agents` → `/workspace/agents`): ```bash REPO_DIR="/workspace/$(basename <repo>)" if [ ! -d "$REPO_DIR/.git" ]; then git clone https://github.com/<repo>.git "$REPO_DIR" fi cd "$REPO_DIR" ``` ## 1. Gather everything known ```bash gh issue view <issueNumber> --repo <repo> --json title,body,labels,author,comments ``` Read the body and **every comment**. In particular look for a comment from the prior repro run (`@agent-think repro`): it may contain a minimal reproduction, a live URL, observed-vs-expected behavior, and a **root-cause hypothesis** pointing at a file/line. Use it as your starting point — do not re-derive what is already known. **Decide if this is fixable in one shot.** If the issue is a feature request needing design, is too vague, spans many subsystems, or you cannot locate a confident root cause, stop: return `prOpened: false`, `skipped: true`, and a `summary` explaining why. Post a brief, polite comment saying the pr-agent is skipping it and what additional detail would help; begin it with `Requested by @<requestedBy>` when the run envelope has a requester. ## 2. Locate the root cause With the repo cloned at `$REPO_DIR`, read the relevant code in `packages/agents`, `packages/think`, etc. Confirm the hypothesis (or form your own) by reading the actual implementation. Identify the smallest change that fixes the reported behavior. ## 3. Branch and set commit identity Commit as the agent-think app itself: ```bash git config user.name "agent-think[bot]" git config user.email "agent-think[bot]@users.noreply.github.com" BRANCH="fix/issue-<issueNumber>-$(date +%s)" git checkout -b "$BRANCH" ``` ## 4. Make the fix - Smallest correct change. Fewest files. Match the existing code style. - Add or update a **test** that fails before the fix and passes after, when the area is testable. - Add a changeset if the repo uses them (`.changeset/`) for a user-facing fix: create a markdown file following the existing format in `.changeset/`. - Update **examples and docs** when the change affects behavior they show: if an `examples/*` app or a `docs/`/README section demonstrates the code you touched, keep it truthful in the same PR. ## 5. Verify Install and run the affected package's checks (monorepo uses pnpm + Nx): ```bash # NOISY commands (installs, builds, test suites) MUST be redirected to a # container-local /temp file and tailed — streaming megabytes of live output # through the session can kill it irrecoverably: mkdir -p /temp CI=1 pnpm install --frozen-lockfile --reporter=append-only \ > /temp/install.log 2>&1 || (tail -40 /temp/install.log; false) tail -20 /temp/install.log # Prefer scoped/affected runs; fall back to package scripts. pnpm -w exec oxfmt --check . || pnpm -w exec oxfmt --write . pnpm -w exec oxlint . || true # Run the relevant package's typecheck + tests, redirected the same way: pnpm --filter <package> typecheck > /temp/typecheck.log 2>&1; tail -30 /temp/typecheck.log pnpm --filter <package> test > /temp/test.log 2>&1; tail -40 /temp/test.log ``` (`/temp` is outside the `/workspace` mount and is not synchronized.) Record whether tests passed in `testsPassed`. If you cannot make tests pass and the failure is your change's fault, fix it; if tests are unrelated/flaky, note that in the PR body. Do not open a PR whose own new test fails. ## 6. Deploy a live demo of the PR Every PR ships with a **temporary deployment demoing the change** so reviewers click a link and see the fixed behavior instead of imagining it. 1. Build the fixed package(s) in the repo and pack them: ```bash pnpm --filter <package> build (cd packages/<package> && npm pack --pack-destination /workspace) # -> /workspace/<package>-x.y.z.tgz ``` 2. Build a minimal demo app in `/workspace/demo-<issueNumber>` that exercises the fixed path. Follow the activated reproduce skill's **"Minimal frontend (required)"** recipe — same 7 files — but install the packed tarball so the demo runs YOUR fix: ```bash npm install /workspace/<package>-x.y.z.tgz ``` If the repro run left a `repro/issue-<issueNumber>` branch, start from that project instead and just swap the dependency to the packed build — the same UI then demos broken-before / fixed-after. 3. Deploy and verify the fix is actually observable in the page: ```bash npm run deploy # vite build && wrangler deploy --temporary curl -sS -i "<demoUrl>/" | head -5 ``` Capture the `https://...workers.dev` URL as `demoUrl`. Ignore the claim URL the deploy prints — it never goes in a PR. Use judgment: changes with no runtime surface (docs-only, types-only, CI) skip the demo — say so in the PR body ("no runtime surface to demo") rather than deploying something meaningless. ## 7. Commit, push, open the PR ```bash git status --short git add -A git commit -m "fix: <concise description> (#<issueNumber>)" git push -u origin "$BRANCH" gh pr create --repo <repo> \ --base main \ --head "$BRANCH" \ --title "fix: <concise description> (#<issueNumber>)" \ --body-file /temp/pr-body.md ``` Write the PR body outside the checkout at `/temp/pr-body.md`. It must include: - `Requested by @<requestedBy>` near the top, using the exact sanitized `requested-by` mention from the run envelope (omit only when it is `unknown`). - `Closes #<issueNumber>` so the issue auto-links. - **What was wrong** (root cause, citing the file/line). - **What changed** and why this is the minimal fix. - **Testing**: what you added/ran and the result. - **Demo**: phrase it exactly like "Demo URL (expires after 60 mins): <demoUrl>" plus one line of click instructions and a note that it runs the packed build from this branch. If skipped, one line on why. - A link back to the repro-agent's reproduction (comment and/or the `repro/issue-<issueNumber>` branch) if one exists. - A "🤖 generated by the pr-agent — please review carefully" footer. Capture the PR URL and branch name. Do **not** post an acknowledgement or "opened a PR" comment on the issue. The PR links back to the issue via `Closes #<issueNumber>`. The only case where you comment is the skip path in the **Gather everything known** step (no PR exists to show). ## 8. Return the structured result Return exactly: - `prOpened` (boolean) - `skipped` (boolean) - `summary` (string — one or two sentences) - `prUrl` (string, optional) - `branch` (string, optional) - `testsPassed` (boolean, optional) - `demoUrl` (string, optional)
在 GitHub 查看