hosting-artifacts

Upload demo videos, screenshots, and log bundles to a public R2 bucket for PR linking.

518|49|Updated Apr 7, 2021
One-click install
npx skills add https://github.com/dxos/dxos --skill hosting-artifacts
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: hosting-artifacts
Source: https://github.com/dxos/dxos/tree/main/.agents/skills/hosting-artifacts
Command: npx skills add https://github.com/dxos/dxos --skill hosting-artifacts

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Large binary artifacts like demo videos and screenshots cannot be committed to git or attached to GitHub PRs by an automated agent, leaving reviewers with no way to see visual evidence of a change. This Skill publishes those files to a public Cloudflare R2 bucket over HTTPS and produces a verified link you can embed in a PR body, issue, or Linear ticket.

Core Features & Use Cases

  • Dependency-free uploads: A Node.js script signs S3 requests with SigV4 using only built-in crypto, so it runs in a cloud sandbox with just R2_ACCESS_KEY_ID and R2_SECRET_ACCESS_KEY — no wrangler, aws CLI, or npm packages.
  • Post-upload verification: Every upload is checked through the public URL for status, content type, byte count, ETag against the local md5, and Accept-Ranges before the link is printed.
  • Key conventions and lifecycle: Date-first key layout (demos/YYYY-MM-DD-slug/), plus list and delete operations for cleanup.
  • Use Case: After recording a 19 MB .webm demo of a UI fix, upload it and embed a labelled link with duration and size in the PR body so reviewers can watch it directly.

Quick Start

Upload my demo video /tmp/demo/demo.webm to the shared R2 artifacts bucket and give me the verified public URL to paste into my pull request.

Frequently Asked Questions about hosting-artifacts

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I upload a demo video to share in a GitHub PR?

Run the upload-artifact.mjs script with the file path and a slug; it uploads to the agent-artifacts R2 bucket, verifies the public URL, and prints the link. Embed it in the PR body as a labelled markdown link with duration and file size.

How to upload files to Cloudflare R2 without wrangler or aws CLI?

Use a Node.js script that signs S3 requests with SigV4 using the built-in crypto module. It needs only the R2_ACCESS_KEY_ID and R2_SECRET_ACCESS_KEY environment variables, so it works in sandboxes with no installed tooling.

Can an AI agent embed an inline video player in a GitHub PR?

No. GitHub only rewrites user-attachments asset URLs into video players, and those require a browser drag-and-drop session. The practical convention is a labelled plain link to the video hosted on R2, or an embedded image for stills.

Why does my R2 upload return 403 AccessDenied with rclone?

The 403 comes from rclone's bucket preflight check, not the data operation, when using scoped R2 API tokens. Add --s3-no-check-bucket or set no_check_bucket = true in the remote configuration to bypass it.

Why does my uploaded video download instead of playing in the browser?

R2 serves back the exact content type stored at upload time, and wrangler infers nothing. Re-upload with the correct --content-type flag, such as video/webm, so browsers render it inline instead of downloading.

What files should never be uploaded to a public artifact bucket?

Never upload credentials visible on screen, real user data, feedback logs containing user content, or anything from secrets files. Public R2 URLs are unauthenticated and may be cached or indexed even after deletion.