paperclip-page

Publish static HTML directories to an S3 and CloudFront page host.

Updated Jun 16, 2026
One-click install
npx skills add https://github.com/adamtpang/summon.company --skill paperclip-page-adamtpang
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: paperclip-page
Source: https://github.com/adamtpang/summon.company/tree/main/.agents/skills/paperclip-page
Command: npx skills add https://github.com/adamtpang/summon.company --skill paperclip-page-adamtpang

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Sharing a static page, prototype, report, or viewer usually requires ad-hoc hosting or temporary sharing links. This Skill publishes a local static directory to a durable Paperclip-controlled S3 bucket served through CloudFront, giving you a stable public URL under a domain like pages.paperclip.ing. ## Core Features & Use Cases - Validated Publishing: The publish.sh helper enforces a root index.html, rejects symlinks, hidden files, unsafe slugs, and accidental overwrites before any upload occurs. - Safe Updates: Additive overwrites only, with ownership proof via a local .paperclip-page/state.json file, and no s3:DeleteObject or sync --delete behavior. - Dry-Run Mode: Validate structure and preview the resolved URL and S3 prefix without making any AWS writes. - Use Case: An agent builds a static report site with index.html and assets, runs the helper with --slug q3-report, and returns the public URL https://pages.paperclip.ing/q3-report/ to the user. ## Quick Start Ask the agent to publish the static site in the ./site directory to the Paperclip pages host with the slug demo and return the public URL.

Frequently Asked Questions about paperclip-page

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

FAQPage Schema
How do I publish a static site to S3 and CloudFront?

Prepare a directory with index.html at its root, set PAPERCLIP_PAGE_BUCKET, PAPERCLIP_PAGE_BASE_URL, AWS_REGION, and AWS credentials, then run scripts/publish.sh with your directory and a --slug value. The helper uploads via aws s3 sync and prints the public URL.

How do I update an already published static page?

Run publish.sh with --update from the same source directory that originally published the page. The helper requires the local .paperclip-page/state.json ownership file matching the target bucket and prefix, and only performs additive overwrites without deleting remote objects.

Can I test the publish without making AWS changes?

Yes, use the --dry-run flag. It validates the source directory structure, slug, and prefix, then prints the planned bucket, prefix, and URL without requiring AWS credentials or performing any uploads.

Why does the publish fail with AccessDenied on upload?

AccessDenied usually means the agent is using admin credentials instead of the dedicated uploader IAM identity, or the uploader policy lacks s3:ListBucket, s3:GetObject, and s3:PutObject. Also confirm uploads target a slug prefix so object ARNs match the policy.

What content restrictions apply when publishing static pages?

Only public content is allowed. The helper rejects symlinks, hidden files, dot paths, nested or reserved slugs, and directories without a root index.html. Never publish secrets, credentials, customer data, or private company material.