about
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its purpose, version, or…
Uploads promo videos and content to Cloudflare R2 or AWS S3. Use when the user wants to host promo content for social media or distribution.
$ npx -y skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/cloud-uploaderContext preview
The summary Claude sees to decide when to auto-load this skill.
Uploads promo videos and content to Cloudflare R2 or AWS S3. Use when the user wants to host promo content for social media or distribution.
name: cloud-uploader
description: Uploads promo videos and content to Cloudflare R2 or AWS S3. Use when the user wants to host promo content for social media or distribution.
model: sonnet
effort: low
prerequisites:
- promo-director
allowed-tools:
- Read
- Bash
- Glob
requirements:
python:
- boto3Upload promo videos and other album content to cloud storage (Cloudflare R2 or AWS S3).
After generating promo videos with `/bitwize-music:promo-director`, upload them to cloud storage for:
Generate → Master → Promo Videos → **[Cloud Upload]** → Release
Optional step after promo-director, before release-director.
Cloud credentials must be configured in `~/.bitwize-music/config.yaml`:
cloud:
enabled: true
provider: "r2" # or "s3"
# For Cloudflare R2
r2:
account_id: "your-account-id"
access_key_id: "your-access-key"
secret_access_key: "your-secret-key"
bucket: "promo-videos"
# For AWS S3
s3:
region: "us-west-2"
access_key_id: "your-access-key"
secret_access_key: "your-secret-key"
bucket: "promo-videos"See `${CLAUDE_PLUGIN_ROOT}/reference/cloud/setup-guide.md` for detailed setup instructions.
# If using the shared venv (recommended)
~/.bitwize-music/venv/bin/pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt
# Or install separately
pip install boto3The upload script uses `~/.bitwize-music/venv` if available, otherwise falls back to system Python.
**Check config:**
cat ~/.bitwize-music/config.yaml | grep -A 20 "cloud:"
Verify:
**Check promo videos exist:**
ls {audio_root}/artists/{artist}/albums/{genre}/{album}/promo_videos/
ls {audio_root}/artists/{artist}/albums/{genre}/{album}/album_sampler.mp4If missing:
Error: Promo videos not found.
Generate with: /bitwize-music:promo-director {album}**Call `get_python_command()` first** to get the venv Python path and plugin root. Use these for all bash invocations below.
PYTHON="{python from get_python_command}"
PLUGIN_DIR="{plugin_root from get_python_command}"Preview first:
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --dry-runOutput shows:
**Upload all (promos + sampler):**
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album}**Upload only track promos:**
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --type promos**Upload only album sampler:**
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --type sampler**Upload with public access:**
$PYTHON "$PLUGIN_DIR/tools/cloud/upload_to_cloud.py" {album} --public**For R2:**
**For S3:**
## Cloud Upload Complete
**Provider:** R2 (or S3)
**Bucket:** {bucket}
**Album:** {album}
**Uploaded Files:**
- {artist}/{album}/promos/01-track_promo.mp4
- {artist}/{album}/promos/02-track_promo.mp4
- ...
- {artist}/{album}/promos/album_sampler.mp4
**Total:** 11 files, 125.4 MB
**Next Steps:**
1. Verify files in cloud dashboard
2. If public: Test URLs work
3. Continue to release: /bitwize-music:release-director {album}**IMPORTANT: Cloud paths are FLAT - no genre folder.**
The cloud path structure is different from the local content structure:
| Location | Path Structure | |----------|----------------| | Local content | `{content_root}/artists/{artist}/albums/{genre}/{album}/` | | Local audio | `{audio_root}/artists/{artist}/albums/{genre}/{album}/` | | **Cloud** | `{artist}/{album}/` (no genre!) |
Files are organized in the bucket as:
{bucket}/
└── {artist}/
└── {album}/
└── promos/
├── 01-track_promo.mp4
├── 02-track_promo.mp4
├── ...
└── album_sampler.mp4**Example for album "my-album" by "bitwize" in rock genre:**
| Option | Description | |--------|-------------| | `--type promos` | Upload only track promo videos | | `--type sampler` | Upload only album sampler | | `--type all` | Upload both (default) | | `--dry-run` | Preview without uploading | | `--public` | Set files as public-read | | `--audio-root PATH` | Override audio_root from config |
**Basic upload:**
/bitwize-music:cloud-uploader my-album
**Preview only:**
/bitwize-music:cloud-uploader my-album --dry-run
**Upload promos only:**
/bitwize-music:cloud-uploader my-album --type promos
**Upload with public access:**
/bitwize-music:cloud-uploader my-album --public
**"Cloud uploads not enabled"**
I love music but never learned an instrument. AI became the creative outlet that was always out of reach. This project started as a way to go deep on Claude Code plugin architecture, agentic workflows, multi-model orchestration, and MCP tooling.
Repo: bitwize-music-studio/claude-ai-music-skills
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its purpose, version, or…
Creates visual concepts for album artwork and generates AI art prompts. Use during planning for concept discussion, or after all tracks are Final for actual…
Designs album concepts, tracklist architecture, and thematic planning through 7 structured phases. Use when planning a new album or reworking an existing album…
Shows a structured progress dashboard for an album with percentage complete per phase, blocking items, and status breakdown. Use for a quick visual overview of…
Tracks and manages album ideas including brainstorming, planning, and status updates. Use when the user wants to add, review, or organize their album idea…
Copies track content (lyrics, style prompts, streaming lyrics) to the system clipboard. Use when the user needs to paste lyrics or style prompts into Suno or…