From ccflow
Canonical procedure for discovering, downloading, and loading ticket attachments
How this skill is triggered — by the user, by Claude, or both
Slash command
/ccflow:attachmentsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Main-agent only**: This skill uses `AskUserQuestion` (Step 2) and must only be invoked from the main agent — never from subagents, where user interaction deadlocks silently.
Main-agent only: This skill uses AskUserQuestion (Step 2) and must only be invoked from the main agent — never from subagents, where user interaction deadlocks silently.
After fetching the ticket, check for attachments that may provide additional context (mockups, design specs, API docs, screenshots, etc.).
Scan body and each comments[].body for URLs matching these domain patterns, embedded with either  (image embed) or [text](url) (link) markdown syntax:
https://user-images.githubusercontent.com/...https://github.com/<owner>/<repo>/assets/...https://github.com/user-attachments/files/...https://github.com/user-attachments/assets/...Note: user-attachments/assets/ URLs are often extensionless. If embedded with ![...]() syntax, classify as image; if embedded with [...]() syntax, classify as document (file download).
Extract the display name (alt text or link text, fallback to filename from URL) and URL. Size is unknown until download.
If no attachments found → skip the rest of this procedure and return to the calling skill.
Classify each attachment by extension:
Present via AskUserQuestion with multiSelect=true:
"Found N attachment(s) on this ticket. Which would you like to download for context?"
Options (one per attachment if ≤ 4, grouped by type if > 4):
"<name> (<type>, <size>)" per attachment when ≤ 4"All images (N)", "All documents (N)", "All other files (N)" when > 4If user selects none → skip the rest of this procedure and return to the calling skill.
mkdir -p /tmp/claude/attachments
curl -sL "<url>" -o "/tmp/claude/attachments/<filename>"
If download returns 404 (private repo), retry with auth:
curl -sL -H "Authorization: token $(gh auth token)" "<url>" -o "/tmp/claude/attachments/<filename>"
Post-download: check size with stat. If > 10 MB and user wasn't warned → report and skip that file.
On any download failure → warn and continue with remaining files.
For each downloaded file, use the Read tool:
After reading each image, produce a brief structured summary (5–15 lines) covering applicable aspects:
Keep all attachment context available for the rest of the calling skill's execution.
npx claudepluginhub matteobortolazzo/claude-tools --plugin ccflowGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.