about
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its…
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.
Claude Code
$ npx -y skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader --agent claude-code
Codex
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a codex -y
Cursor
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a cursor -y
Gemini CLI
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a gemini-cli -y
GitHub Copilot
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a github-copilot -y
OpenCode
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a opencode -y
Windsurf
$ npx skills add bitwize-music-studio/claude-ai-music-skills --skill cloud-uploader -a windsurf -y
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.
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its…
Creates visual concepts for album artwork and generates AI art prompts. Use during planning for concept discussion, or after all…
Designs album concepts, tracklist architecture, and thematic planning through 7 structured phases. Use when planning a new album…
Shows a structured progress dashboard for an album with percentage complete per phase, blocking items, and status breakdown. Use…
Tracks and manages album ideas including brainstorming, planning, and status updates. Use when the user wants to add, review, or…
Copies track content (lyrics, style prompts, streaming lyrics) to the system clipboard. Use when the user needs to paste lyrics…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…