跳到正文
cccskills
免费在 GitHub 公开

file-uploads

File upload decision guide: signed URLs, validation, storage, virus scanning, image processing, UX. Use for: upload, file storage, attachment, avatar, image, document, GCS, S3, presigned.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane星标 3(GitHub 3 + cccskills 0)
集成工具AWS

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md3.8 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

file-uploads — Decision Guide

Default storage: GCS. Logic identical for S3/R2 — adapt provider SDK.

Upload Strategy Decision

StrategyWhenTrade-off
Signed URL (direct)Default for all uploadsBackend never touches bytes; scales trivially
Server proxy<100KB parsed inline (small CSV)Simple but consumes backend RAM; no scale
Resumable/multipart>100MB (videos, datasets)8-32MB chunks; resume on failure
tus protocolVendor-neutral resumableRequires tusd server

Signed URL Flow

Client → POST /uploads/sign → Backend (validate, create pending row, return signed URL)
Client → PUT bytes → Storage (uploads-pending/)
Storage → Event (Pub/Sub) → Worker (MIME sniff + virus scan)
Worker → if clean: move to uploads-clean/, update DB status

Key decisions:

  • Backend never touches bytes — only signs and tracks
  • Two buckets: uploads-pending (quarantine) + uploads-clean (served)
  • Key is UUID, never client filename (PII, collisions, path traversal)
  • Signed URL expiry: <=15min; include content-length constraint in signature
  • Multi-tenant: t/{tenant}/u/{user}/{uuid} key path

Checklist

CheckWhereDetail
MIME whitelistSign + Worker (sniff)Whitelist only; sniff first 512 bytes server-side
Size limitSign + URL constraintEnforce per use case (10MB avatar, 100MB doc)
Virus scanWorker (async)ClamAV / Cloudmersive / VirusTotal; never serve status != clean
Content-Type matchWorkerSniffed vs declared; reject on mismatch
ChecksumWorker (post-scan)SHA-256 stored for integrity

Never trust client Content-Type or file extension alone.

Storage Decision

ProviderWhenNotes
GCSDefault (GCP)V4 signed URLs, Pub/Sub, Cloud CDN
S3AWS stackPresigned URLs, EventBridge, CloudFront
R2Egress-sensitiveS3-compatible, zero egress fees

Image Processing

  • On upload (worker): predictable sizes — avatars, thumbnails
  • On demand (CDN): many sizes — Cloudflare Images or imgproxy
  • Always WebP/AVIF for delivery; generate thumbnails async, never in request

Status Machine

pending → scanning → clean | infected (deleted) | rejected (deleted)

DB columns: id, owner_id, tenant_id, bucket, key, mime, size, checksum_sha256, status, scanned_at, created_at.

UX Patterns

  • Progress (web): XHR upload.onprogress — fetch lacks upload progress
  • Progress (RN): expo-file-system uploadAsync
  • 100MB: switch to resumable with per-chunk retry + exponential backoff

  • Show placeholder until status=clean; poll or WebSocket for completion

Anti-patterns

  • Proxying bytes through backend — wastes RAM, crashes pods
  • Trusting extension or client Content-Type without server sniff
  • Client filename as key — PII, collisions, traversal
  • Serving pending/scanning files; sync virus scan in request
  • Signed URLs >15min; no size limit; any-MIME allowed
  • Public buckets; missing CORS; no rate limit on /uploads/sign

Checklist

  • Signed URL <=15min; content-length in signature
  • MIME whitelist at sign AND worker (real sniff)
  • UUID key, never client filename
  • Separate pending/clean buckets; virus scan before serving
  • DB status machine (pending→scanning→clean)
  • SHA-256 checksum post-scan; CORS on bucket
  • Rate limit on /uploads/sign; tenant_id in path
  • Thumbnails async; CDN for clean files; structured logs

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Plan, design, and implement A/B tests and experiments with statistical rigor. Covers hypothesis frameworks, sample sizing, metrics, and result analysis.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Web/mobile accessibility decision guide: WCAG 2.2 AA, ARIA, keyboard nav, focus management, contrast, testing. Use for: a11y, accessibility, wcag, aria, screen reader, keyboard, contrast.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Generate, iterate, and scale ad creative for paid advertising across Google, Meta, LinkedIn, and X. Covers platform specs, creative frameworks, and quality validation.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Musica interactiva para juegos: layering vertical, re-secuenciacion horizontal, stingers, reglas de transicion con sync points, y mapeo de estados de gameplay a musica. Usar para: musica adaptativa, sistema de musica dinamica, transiciones musicales, combat music.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Design multi-agent systems, create agent architectures, define communication patterns, and build autonomous agent workflows with structured evaluation frameworks.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane32026年10月27日 更新

Inter-agent communication protocol for C-suite agent teams. Defines invocation syntax, loop prevention, isolation rules, response formats, and quality loops.

中文简介正在准备中。当前显示原文说明。

SebastianLuser/claude-code-arcane32026年10月27日 更新

查看 SebastianLuser 的全部技能

报告此技能的问题