github:attach

github:attach is a skill for Claude Code from bendrucker/claude. It costs 45 tokens per session (1,026 once invoked), scanned A, original, MIT.

A skill for uploading local images or videos to GitHub so they can appear directly in issues, pull requests, comments, or reviews.

In plain words
What is it for?
Use it to attach supported PNG, JPEG, GIF, or WebP files and screen recordings to GitHub content.
Why use it?
A local file path usually cannot be opened by GitHub readers, while an uploaded attachment can be displayed inline.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Part of the github plugin — 5 skills, 2 agents shipped together

Good fit Use it to attach supported PNG, JPEG, GIF, or WebP files and screen recordings to GitHub content.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/bendrucker/claude/attach
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add bendrucker/claude --skill attach
Clone the repo
git clone --depth 1 https://github.com/bendrucker/claude

Made for: Claude Code.

Or install github, the plugin that ships this one along with the rest of its 5 skills, 2 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for github:attach

README.md
[![agentmods](https://agentmods.dev/badge/skills/bendrucker/claude/attach/github.svg)](https://agentmods.dev/skills/bendrucker/claude/attach)
Your own site
<a href="https://agentmods.dev/skills/bendrucker/claude/attach"><img src="https://agentmods.dev/badge/skills/bendrucker/claude/attach/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for github:attach

Your own site · 80×15
<a href="https://agentmods.dev/skills/bendrucker/claude/attach"><img src="https://agentmods.dev/badge/skills/bendrucker/claude/attach.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 45 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,026 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00045 $0.01026
Opus 5.5 $0.00018 $0.00410
Sonnet 5.5 $0.00009 $0.00205
Haiku 4.5 $0.00005 $0.00103

Measured 1mo ago against content hash cabecf83e5c0, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

github:attach scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/github/skills/attach/SKILL.md · 76 lines

How it starts

The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Attachments

Images and video in issues and pull requests are served from a user-attachments store. gh 2.99.0 added a repeatable --attach flag that uploads to it from gh issue create, gh issue edit, gh issue comment, gh pr create, gh pr edit, and gh pr comment. Everything else uploads through the endpoint the flag wraps: review comments and pending reviews, discussions, releases, gists, and any gh older than 2.99.0. Both paths exist on GitHub.com and Enterprise Cloud only. Enterprise Server has no attachment store.

--attach on this build: !gh issue comment --help 2>/dev/null | grep -q -- '--attach' && echo present || echo absent

Absent means this gh predates 2.99.0. Upgrade it or use the endpoint.

The Flag

Write the body with the local path in the markdown, then name each file on the command. gh uploads it and rewrites the reference in place. The image lands where the prose put it. The alt text written in the body wins.

gh pr create --title "..." --body-file tmp/pr-body.md --attach ./picker.png --attach ./walkthrough.mp4
  • A path is absolute or relative to the directory gh runs in.
  • A file the body never references is appended to the end, in flag order, with the filename as alt text. Alt text follows the path after #: --attach './picker.png#The wide layout'.
  • gh pr edit and gh issue edit without a body flag keep the existing body and append.
  • Up to 50 files per command.
  • When some uploads fail, the issue, pull request, or comment still lands with the ones that succeeded. Its URL prints, and the exit status is non-zero. Read the output before retrying. A blind retry duplicates the assets that already uploaded.
  • The token needs write access to the repository.

The Endpoint

POST https://uploads.github.com/user-attachments/assets has no REST route and no documentation. gh api reaches it by full URL instead. A data-residency Enterprise Cloud tenant has its own upload host in place of uploads.github.com. repository_id takes the numeric REST id. gh repo view --json id returns the GraphQL node id, which fails here.

Read the full file on GitHub · 76 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago Changed · +3 lines · -27 tokens per session cabecf83e5c0
  2. 1mo ago First seen · 73 lines · 72 tokens per session scan A 73d8d5cc1a8e

Subscribe to this mod's changes

github:attach is a skill published in the GitHub repository bendrucker/claude (18 stars, last pushed today), licensed MIT. It adds 45 tokens to every session and 1,026 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

update-pr

Update an existing pull request with new changes. Use when the user wants to update a PR, push follow-up changes to a PR, refresh a PR description, or sync a PR with latest commits. Triggers on: update pr, update-pr, update the pr, push to pr, refresh pr, sync pr, update pull request.

ReflexioAI/claude-smart · 71 tokens

update

Safe cc10x upgrade through the Claude Code plugin CLI. Lists every installed scope, refreshes the marketplace, updates each scope, and optionally carries local patches over to the new install. Use this skill when: updating cc10x, upgrading, pulling latest cc10x, syncing plugin, refreshing cache, or checking for new…

romiluz13/cc10x · 108 tokens

smart-rebase

Smart partial rebase for squash-merge repositories. Auto-detect which commits to keep/drop when base branch was squash-merged into target. Use when: user says 'rebase', 'partial rebase', 'base already merged', 'smart rebase', or /smart-rebase. Not for: simple git rebase (the developer runs it — no skill executes…

sd0xdev/sd0x-harness · 133 tokens

resolving-merge-conflicts

Use when a git merge or rebase reports conflicts and the operation is in progress.

romiluz13/cc10x · 25 tokens

next-step

Change-aware next step advisor. Use when: user asks what to do next, workflow progression is unclear, session just started with dirty worktree. Not for: executing the suggested command (user decides), auto-loop decisions (hooks handle that). Output: findings-based suggestions or session summary with commit seed.

sd0xdev/sd0x-harness · 63 tokens

pr-comment

Post friendly review comments to a GitHub PR — prepare locally, preview, then submit as atomic review. Use when: posting code review comments, giving PR feedback, sending inline suggestions. Not for: reading existing reviews (use load-pr-review), creating PRs (use create-pr), PR status (use pr-summary).

sd0xdev/sd0x-harness · 67 tokens