Agent skill

GitHub PR Assets

by zly2006 in zly2006/zhihu-plus-plus

Manage screenshots and other visual assets for GitHub pull requests.

AGPL-3.0Auto-check passedDevelopment

Install GitHub PR Assets

skills CLI
$ npx skills add zly2006/zhihu-plus-plus --skill github-pr-assets -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install zly2006/zhihu-plus-plus github-pr-assets --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/zly2006/zhihu-plus-plus.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/github-pr-assets .claude/skills/github-pr-assets && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
github-pr-assets
GitHub stars
4.2k
Token cost
~1.3k tokens
SKILL.md length
583 words
Files
2
Skills in repo
11
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Manage screenshots and other visual assets for GitHub pull requests.

  • Works in 7 steps: Inspect the PR body with gh pr view… → Verify every screenshot or asset… → Choose the least disruptive hosting method → …
  • A PR body needs real screenshots
  • SKILL.md covers Overview, Workflow, GitHub Upload Boundary and PR Body Requirements, plus 2 more sections
  • Calls gh, curl and git; reaches raw.githubusercontent.com

What it does

GitHub PR Assets is an agent skill from zly2006/zhihu-plus-plus. Manage screenshots and other visual assets for GitHub pull requests. Use when a PR body needs real screenshots, when local /tmp paths must be replaced with durable links, when deciding whether GitHub web drag-and-drop uploads can be reproduced with gh api, or when updating a PR without disturbing the user's browser tabs.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).

It sits in Development, covering Pull requests. It works with GitHub. The repository describes itself as: Zhihu++ | 知乎++: Ad-free, low cost, AI powered zhihu android 3rd-party client. 去广告、占用低、AI大模型的新时代知乎安卓端体验. The licence is AGPL-3.0.

When your agent uses it

  • A PR body needs real screenshots
  • Local /tmp paths must be replaced with durable links
  • Deciding whether GitHub web drag-and-drop uploads can be reproduced with gh api
  • Updating a PR without disturbing the users browser tabs

Example prompts

  • “/github-pr-assets”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Inspect the PR body with gh pr view --json title,body,url,headRefName,baseRefName.
  2. Verify every screenshot or asset mentioned in the PR
  3. Choose the least disruptive hosting method
  4. Push the branch before updating the PR body.
  5. Verify hosted URLs with curl -I -L '' and require HTTP 200 plus the expected content type.
  6. Update the PR body with gh pr edit --body-file -.
  7. Re-read the PR body and re-check git status --short --branch.

What it can do on your machine

Read from SKILL.md and the folder at commit 2daa669. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • curl
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • raw.githubusercontent.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

GitHub PR Assets loads about 1.3k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 583 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from zly2006/zhihu-plus-plus at commit 2daa669, republished under its AGPL-3.0 licence (© zly2006). 583 words, ~1,333 tokens.

Download SKILL.mdSave it as .claude/skills/github-pr-assets/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
github-pr-assets
description
Manage screenshots and other visual assets for GitHub pull requests. Use when a PR body needs real screenshots, when local /tmp paths must be replaced with durable links, when deciding whether GitHub web drag-and-drop uploads can be reproduced with gh api, or when updating a PR without disturbing the user's browser tabs.

GitHub PR Assets

Overview

Use this skill to attach verified screenshots or other review assets to GitHub PRs without relying on local-only paths or unverified upload behavior.

Core rule: PR descriptions must contain durable, publicly accessible Markdown links or images. A local path such as /tmp/foo.png is evidence for the agent, not a usable PR asset. Do not store transient PR screenshots in the product repository unless the user explicitly asks for that; use the dedicated agent-image repository.

Workflow

  1. Inspect the PR body with gh pr view <number> --json title,body,url,headRefName,baseRefName.
  2. Verify every screenshot or asset mentioned in the PR:
    • local existence: ls -lh <path>
    • image type and dimensions: file <path>
    • optional checksum: shasum -a 256 <path>
  3. Choose the least disruptive hosting method:
    • Prefer existing durable URLs if the image is already hosted and can be verified.
    • For generated agent screenshots, use zly2006/agent-image by default. Check it with gh repo view zly2006/agent-image; if it does not exist, create it instead of claiming upload is blocked.
    • Put PR assets under a namespaced path such as zhihu-plus-plus/pr-<number>/<file>.png inside agent-image.
    • Use raw GitHub URLs for PR Markdown, for example https://raw.githubusercontent.com/zly2006/agent-image/main/zhihu-plus-plus/pr-<number>/<file>.png.
  4. Push the branch before updating the PR body.
  5. Verify hosted URLs with curl -I -L '<url>' and require HTTP 200 plus the expected content type.
  6. Update the PR body with gh pr edit <number> --body-file -.
  7. Re-read the PR body and re-check git status --short --branch.

PR 正文必须先写入临时 Markdown 文件,再通过 --body-file 传给 gh;不要把包含 \\n 的字符串直接作为 --body 参数,否则 GitHub 会把转义符原样显示,Markdown 不会解析。

GitHub Upload Boundary

Do not claim that GitHub's web drag-and-drop attachment upload can be reproduced with ordinary gh api unless a real endpoint has been verified in the current environment.

Known boundary:

  • Public REST issue/comment APIs accept Markdown text; they do not expose a general "upload this screenshot attachment for a PR body" endpoint.
  • uploads.github.com is for documented upload surfaces such as release assets, not a generic PR screenshot endpoint.
  • The browser drag-and-drop flow depends on GitHub Web's authenticated session and internal request flow. A token-only gh api call is not equivalent.

When the user forbids browser disruption, do not open, focus, navigate, or upload through their active tabs. Use CLI/API inspection and raw-link hosting instead, or ask before using a separate browser context.

Show full SKILL.md (207 more words)Show less

PR Body Requirements

For UI PRs, include:

  • A short note that screenshots came from the actual app, device, emulator, or reproducible UI test output.
  • Markdown image links, not local paths.
  • Enough context to identify what each screenshot proves.

Good pattern:

markdown
截图来自实际运行的 Lite Debug APK + AVD `Medium_Phone_2`。

![回答详情赞同者弹层](https://raw.githubusercontent.com/owner/repo/branch/docs/pr-assets/pr-415/answer-voters-sheet.png)

Avoid:

markdown
- 回答详情赞同者弹层:`/tmp/answer-voters-sheet.png`

Review Discipline

Keep asset commits narrow:

  • In the product repository, commit only skill/content changes needed for the requested PR.
  • In agent-image, commit only the PR asset files needed for the requested PR.
  • Do not touch unrelated dirty files in the user's worktree.
  • Avoid committing large or reusable generated assets unless the PR requirement needs them.
  • Prefer descriptive names like answer-voters-sheet.png over timestamp-only names.
截图夹具不得伪造产品数据资产

截图中的头像、封面、图片等远端产品资产必须来自该响应真实返回的 URL,并确认在截图执行面实际加载成功。不能为了让布局看起来完整,临时生成字母头像、纯色图片或其他人工占位资产,再把它作为功能效果截图发布;这种做法只能证明控件能显示任意图片,不能证明真实数据链路。如果真实资产因凭据、网络或防盗链暂时无法加载,应先移除不合格截图,继续修复执行面或明确报告阻塞,不能用伪造内容补齐画面。

Troubleshooting

创建 skill 的指令不能降级成普通记录

当用户明确说要“创建 skill”或纠正先前误写的 skill 触发词时,必须实际创建或更新一个 skill 目录,并按 skill 创建流程验证。不能只把经验写进现有文档、回复一句“记住了”,或把它当成任务已经完成。例子:用户要求把某类 PR 截图收尾流程沉淀成 skill 时,应该生成 SKILL.md、必要的 metadata,并跑 validator;不是只在原任务技能里加一条失败经验。

agent-image 不存在就创建

当流程要求用 agent-image 承载截图资产时,必须真实检查仓库是否存在。如果不存在,就用 gh repo create zly2006/agent-image --public 创建并继续上传;不能把截图提交到业务仓库,也不能说“没有仓库所以做不了”。例子:PR 需要两张 AVD 截图时,应把图片提交到 agent-image 的项目/PR 子目录,然后把 PR 正文改成该仓库 raw 链接。

raw 链接返回 404

先确认分支已推送,并且 URL 中的 owner、repo、branch、path 都精确匹配。路径大小写必须一致。用 gh pr view 确认 head branch,再用 curl -I -L 验证。

PR 仍显示旧截图或旧正文

先用 gh pr view <number> --json body 验证 GitHub 端正文是否已更新。浏览器缓存或 Markdown 渲染延迟不能替代 CLI/API 复查。

UI PR 截图应复用最合适的真实运行面

为 UI PR 准备效果截图时,选择当前健康、目标 API 匹配且能最低成本复现目标 UI 的 AVD;本地和远端都可以,不能为了满足形式而强制先启动 off。如果功能已经在某个 AVD 上完成真实验证,应优先继续复用同一运行面,避免无意义地重建状态。无论选择哪种设备,截图都必须来自包含当前提交的真实 APK,并验证目标状态确实可见。

数量驱动的布局必须覆盖边界截图

当 UI 布局会随条目数量切换时,PR 截图不能只挑两个看起来有代表性的数量;必须覆盖每个布局分支的入口、相邻边界和容易改变尺寸的少量情况。例子:图片卡片存在单图、普通多图和网格模式时,至少应分别提供 1、2、3 张以及进入网格模式数量的真实截图;3 张图不能证明 1、2 张图没有被放大或错排,满网格也不能证明网格入口数量正确。

© zly2006, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .agents/skills/github-pr-assets of zly2006/zhihu-plus-plus.

  • SKILL.md
  • agents/openai.yaml

Open the folder on GitHubat commit 2daa669

Compare with similar skills

GitHub PR Assets next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

GitHub PR Assets compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
GitHub PR Assets this skillzly2006/zhihu-plus-plus4.2k—~1.3kAutomated safety check: PassAGPL-3.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Check PRonyx-dot-app/onyx32k2 repos~2.3kAutomated safety check: PassMIT
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Create Pull Requestcline/cline70k1 repos~1.6kAutomated safety check: PassApache-2.0
Pull Request Title and Body Writeropeninterpreter/openinterpreter69k2 repos~1.1kAutomated safety check: PassApache-2.0

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Check PR

    onyx-dot-app/onyx

    Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.

    32k GitHub starsUsed in 2 repos~2.3k tokens
    DevelopmentAuto-check passed
  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Pull Request Title and Body Writer

    openinterpreter/openinterpreter

    Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.

    69k GitHub starsUsed in 2 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    Runs a loop on a GitHub pull request: fetch review state, triage comments into actions, implement them and resolve threads, repeating until nothing actionable is left.

    48k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed

More from zly2006/zhihu-plus-plus

All 11 skills in this repo
  • Zhihu Pp AI Slop Cleaner

    zly2006/zhihu-plus-plus

    A skill your agent uses for Zhihu++ maintenance work that scans Kotlin main sources for low-call functions, structurally similar function bodies, dead code, pure forwarding wrappers, pointless…

    4.2k GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Zhihu Instrument Test Governance

    zly2006/zhihu-plus-plus

    Audit, add, migrate, or remove Zhihu++ Android instrument tests under app/src/androidTest.

    4.2k GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Launch On Device

    zly2006/zhihu-plus-plus

    Build, install, and launch the Zhihu++ Android app on a connected device using ADB.

    4.2k GitHub stars~3.1k tokensUpdated yesterday
    Auto-check passed
  • Picky User

    zly2006/zhihu-plus-plus

    以 subagent 启动的 UI 挑剔用户评审。Use when the user, AGENTS, or the current task requires “挑剔的用户”.

    4.2k GitHub stars~744 tokensUpdated yesterday
    Auto-check passed
  • Release Latex Fork

    zly2006/zhihu-plus-plus

    Release the LaTeX fork used by Zhihu++. An agent skill from zly2006/zhihu-plus-plus.

    4.2k GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Zhihu Parallel PR Workflow

    zly2006/zhihu-plus-plus

    Coordinate Zhihu++ issue implementation and pull requests when the user explicitly asks for subagents or when multiple independent issues or scopes have real parallel value.

    4.2k GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about GitHub PR Assets

What does GitHub PR Assets do?

Manage screenshots and other visual assets for GitHub pull requests. GitHub PR Assets is an agent skill from zly2006/zhihu-plus-plus. Manage screenshots and other visual assets for GitHub pull requests.

When should I use GitHub PR Assets?

GitHub PR Assets fits situations like: A PR body needs real screenshots; local /tmp paths must be replaced with durable links; deciding whether GitHub web drag-and-drop uploads can be reproduced with gh api; updating a PR without disturbing the users browser tabs.

How do I install GitHub PR Assets in Claude Code?

Run `npx skills add zly2006/zhihu-plus-plus --skill github-pr-assets -a claude-code`. Or copy the skill folder (.agents/skills/github-pr-assets in zly2006/zhihu-plus-plus) into .claude/skills/github-pr-assets in your project. Claude Code loads it when a task matches its description.

How do I install GitHub PR Assets in Codex?

Run `npx skills add zly2006/zhihu-plus-plus --skill github-pr-assets -a codex`. Or copy the skill folder (.agents/skills/github-pr-assets in zly2006/zhihu-plus-plus) into .agents/skills/github-pr-assets in your project. Codex loads it when a task matches its description.

Can I use GitHub PR Assets in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zly2006/zhihu-plus-plus --skill github-pr-assets -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/github-pr-assets, .gemini/skills/github-pr-assets, .github/skills/github-pr-assets and .opencode/skills/github-pr-assets in your project.

What does GitHub PR Assets need to run?

Going by SKILL.md and its folder, GitHub PR Assets needs the command-line tools its instructions call (gh, curl and git).

Does GitHub PR Assets access the network?

SKILL.md names 1 domain. In commands or code: raw.githubusercontent.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is GitHub PR Assets safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does GitHub PR Assets use?

GitHub PR Assets is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does GitHub PR Assets use?

About 1.3k tokens (SKILL.md is roughly 5.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to GitHub PR Assets?

Skills that share tags, products or a category with GitHub PR Assets: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Create Pull Request (cline/cline, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains GitHub PR Assets?

zly2006 (a GitHub user) maintains it in zly2006/zhihu-plus-plus, which has 4,206 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 7, 2026.

Source: zly2006/zhihu-plus-plus on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.