s3
S3 Deployment Skill
Instructions
This skill handles uploading a local directory (e.g., generated slides) to an AWS S3 bucket or any S3-compatible object storage (e.g., MinIO, Aliyun OSS, Tencent COS) for static website hosting.
-
Prerequisites:
- Ensure the user has valid credentials in their environment:
S3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEYS3_BUCKET(Optional if provided as an argument)S3_REGION(Optional)S3_ENDPOINT_URL(Required for non-AWS services like MinIO or Aliyun OSS)S3_CUSTOM_DOMAIN(Optional, overrides the generated URL)
- Ensure
boto3is installed in the environment. If not, install it. - Identify the source directory (e.g.,
slides/<ppt-name>/dist/) and the target S3 bucket name.
- Ensure the user has valid credentials in their environment:
-
Implementation:
- Create a Python script using
boto3to walk through the source directory. - Configure the S3 client with
endpoint_urlif provided, to support S3-compatible providers. - Upload each file, maintaining the relative path structure.
- Crucial: specific
ContentTypemust be set for each file based on its extension (e.g.,text/htmlfor.html,text/cssfor.css,image/pngfor.png) so that the browser renders it correctly. - Make the objects public if the bucket policy allows or requires ACL (optional, based on bucket configuration).
- Print the final website URL.
- Create a Python script using
Usage
Use the bundled script to upload files:
# Explicit bucket name
uv run {baseDir}/scripts/upload_to_s3.py "slides/my-presentation/dist" "my-bucket" --prefix "presentations/my-presentation"
# Using S3_BUCKET from environment
uv run {baseDir}/scripts/upload_to_s3.py "slides/my-presentation/dist" --prefix "presentations/my-presentation"
Usage Guidelines
- Bucket Name: Check if
S3_BUCKETis set in environment. If not, ask the user for the S3 Bucket name. - Endpoint URL: Check if the user is using a non-AWS provider (like MinIO or Aliyun). If so, request or verify the
endpoint_url. - Source Path: Default to looking for
distfolders inslides/if not specified.
More from yugasun/skills
ai-news-collector
Automatically collect and summarize daily AI industry news, trends, and hot topics from platforms like GitHub (trending repos), X/Twitter (AI influencers/hashtags), and AI news aggregators. Use this skill when the user asks for "today's AI news", "AI industry updates", "what's trending in AI", or wants a daily digest of AI developments.
106slides
Generate high-quality, single-file HTML interactive slide decks. Use this skill when the user asks to create a presentation, slide deck, or PPT.
11dev-web
Create and manage modern React web applications using Bun, Vite, React 19, Tailwind CSS 4, and shadcn/ui. Use this skill when the user asks to build a frontend, a web app, or modify UI components.
6dev-server
Create and manage Python backend services using uv, FastAPI, Pydantic, SQLAlchemy, and AI libraries. Use this skill when the user asks to build a backend, API, or server-side application.
6skill-creator
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
6tavily
AI-optimized web search using Tavily Search API. Use when you need comprehensive web research, current events lookup, domain-specific search, or AI-generated answer summaries. Tavily is optimized for LLM consumption with clean structured results, answer generation, and raw content extraction. Best for research tasks, news queries, fact-checking, and gathering authoritative sources.
2