upload(localPath, remotePath, options) Client operation that reads a local marketing asset and sends PutObject when approved.
- Research:
- Config + path
- Review:
- Secret exposure
- Validate:
- Upload result
Quick Ref / Command
Marketing Kit
/ak:storage
S3-compatible object storage helper for marketing assets across Cloudflare R2, AWS S3, MinIO, Backblaze B2, and DigitalOcean Spaces.
Identify Operation
Check Config
Check SDK
Choose Provider
Rule 01
Marketing assets can use any S3-compatible backend as long as endpoint, bucket, keys, and region are configured.
Rule 02
The skill returns shareable public URLs when S3_PUBLIC_URL or provider URLs are available.
Rule 03
Fallback behavior is intentional: unconfigured storage should not break local asset workflows.
Rule 04
Credentials are never displayed; use least-privilege bucket-scoped access tokens.
Core lanes from input to output, aligned with the command's real execution path.
Start
Input, scope, route
Work
Agent / skill execution
Verify
Gate, review, validation
Close
Report, handoff, artifact
upload(localPath, remotePath, options) Client operation that reads a local marketing asset and sends PutObject when approved.
download(remotePath, localPath) Client operation that creates parent directories and writes downloaded bytes.
list(prefix, maxKeys) Client operation that sends ListObjectsV2 for a bounded prefix.
remove(remotePath) Client operation that deletes exactly one approved key.
exists(remotePath) Client operation that sends HeadObject and returns an existence result.
getPublicUrl(remotePath) Client operation that constructs a URL without sending a provider request.
sync(localFolder, remotePrefix, options) Client operation that scans a local folder; dry run previews file-to-object mapping without upload.
Concrete invocations for each flag, subcommand, mode, or route available in the live workflow.
/ak:storage "Upload assets/images/launch-hero.png to campaign/launch/hero.png only after approval; return the URL if configured" /ak:storage "Download designs/pricing-deck.html to assets/slides/pricing-deck.html after confirming the key" /ak:storage "List approved remote keys under designs/ without deleting or uploading anything" /ak:storage "Remove exactly the approved key drafts/old-banner.png and no other objects" /ak:storage "Check whether campaign/launch/hero.png exists with HeadObject and do not download it" /ak:storage "Use getPublicUrl for designs/pricing-deck.html without making a provider request" /ak:storage "Preview syncing assets/slides/ to slides/ as a dry run; show every object key and wait before upload"