Skills
Use the ak:ckm-storage router
Route list, sync, upload, and URL operations through the ak-ckm-storage export.
The ak-ckm-storage export routes list, sync, upload, and url
operations to an S3-compatible storage client. Its frontmatter now declares the
unique runtime identity ak:ckm-storage, distinct from the separate
ak-storage export.
Invoke this export by its canonical name
Use /ak:ckm-storage in Claude Code or Cursor and $ak:ckm-storage in Codex.
The separate ak-storage export continues to own ak:storage.
Use this page to understand the operation boundary
Scope
- List remote objects, optionally filtered by a prefix.
- Preview or perform a recursive local-folder sync.
- Upload one local file to a chosen object key.
- Construct a public URL for an object key.
Do not use this export when
- You need download, delete, access-policy, bucket-creation, lifecycle, or migration behavior. Those are not router subcommands.
- You need a guarantee that a constructed URL is public or that an object exists. Public access remains a provider and bucket-policy decision.
Prepare without exposing credentials
The client checks these environment variables:
| Variable | Requirement |
|---|---|
S3_ENDPOINT | Required service endpoint |
S3_ACCESS_KEY_ID | Required access-key identifier |
S3_SECRET_ACCESS_KEY | Required secret access key |
S3_BUCKET | Required bucket name |
S3_REGION | Optional; the client defaults to auto |
S3_PUBLIC_URL | Optional public base URL or custom domain |
The backing client also requires @aws-sdk/client-s3 in the environment that
executes it. Keep credentials in an ignored local environment file, use a
bucket-scoped least-privilege credential, and never paste secrets into the
Skill prompt or output.
Runtime identity status
| Runtime | Invocation | Current boundary |
|---|---|---|
| Claude Code | /ak:ckm-storage ... | Routes to the export whose frontmatter declares ak:ckm-storage. |
| Cursor | /ak:ckm-storage ... | Routes to the same unique canonical identity. |
| Codex | $ak:ckm-storage ... | Uses the same canonical identity through Codex invocation syntax. |
Use /ak:ckm-storage list, /ak:ckm-storage sync,
/ak:ckm-storage upload, or /ak:ckm-storage url.
Use /ak:ckm-storage list, /ak:ckm-storage sync,
/ak:ckm-storage upload, or /ak:ckm-storage url.
Use $ak:ckm-storage list, $ak:ckm-storage sync,
$ak:ckm-storage upload, or $ak:ckm-storage url.
See Runtime adapters for capability and delivery differences. Use the runtime-specific invocation shown above.
Review the operation contract
| Operation | Arguments and options | Effect |
|---|---|---|
list | [prefix] | Reads up to the backing client's current listing limit and formats key, size, and last-modified data. |
sync | <folder> [remote-prefix] [--dry-run] [--extensions=.png,.jpg] | Recursively scans local files; dry-run returns proposed object keys, while an approved live run uploads matching files. |
upload | <path> [remote-path] | Reads one local file and writes one remote object. If the remote path is omitted, the router uses the local relative path. |
url | <path> | Constructs a URL from S3_PUBLIC_URL or from endpoint and bucket configuration; existence checking is optional. |
Pass these arguments after the runtime-specific canonical invocation.
Understand the stages
- The router parses the first argument as an operation.
- It loads the matching operation reference.
- The operation loads the backing client from the separate
ak-storageexport and verifies configuration. - Read-only operations list metadata or construct a URL. Write operations inspect local input before any remote request.
- A dry-run sync reports proposed object keys without uploading. A live sync uploads files sequentially and reports individual success or failure.
This cross-export dependency means ak-ckm-storage is a router rather than an
independent storage implementation.
Keep approval and external effects explicit
listand optional existence checks send authenticated read requests to the configured provider.uploadand livesyncread local files and send their contents to the configured bucket. Approve the exact files, object keys, provider, and data classification first.--dry-runprevents upload in the backing sync routine, but it still scans the local folder.- URL construction does not change bucket policy and does not make a private object public.
- The router does not authorize deletion, publication, CDN changes, provider billing, or credential creation.
Expected evidence
For each operation, require:
- The selected operation and resolved local and remote paths.
- Configuration presence without secret values.
- A dry-run file-to-object mapping before a multi-file upload.
- Per-file upload results, failed count, and returned URLs for a live sync.
- Provider errors preserved verbatim enough to diagnose without exposing credentials.
Troubleshoot or continue
| Symptom | Safe next step |
|---|---|
/ak:ckm-storage or $ak:ckm-storage is not discovered | Confirm the installed export's SKILL.md declares name: ak:ckm-storage; an older package may still declare ak:storage. |
| Storage is reported as not configured | Check the required variables and SDK locally without printing their values. Do not add dependencies or credentials until the canonical export is confirmed. |
| A sync is needed now | Use a separately reviewed provider tool or workflow with an explicit dry run, destination, and credential boundary. |
| A returned URL is inaccessible | Verify object existence, bucket policy, custom-domain routing, and provider behavior outside this Skill. |
| Installation state looks unexpected | Follow Kit installation problems without forcing a reinstall over user files. |
Continue with the Marketing Kit overview, Installing kits, or the CLI reference for AgentKit lifecycle commands.
Know the current limits
- Select this router through its declared canonical name
ak:ckm-storage;ak-storageretains the separateak:storageidentity. - The router references a backing client in the other export, so both exports remain part of the documented operation path.
- Provider compatibility is shipped intent, not a live guarantee. Endpoint, authentication, public URL, and billing behavior must be verified with the selected provider.
Organize project marketing assets with ak:assets-organizing
Plan and apply reviewable names and paths under assets while preventing accidental moves, overwrites, deletions, or scope expansion.
Use the ak:storage S3-compatible integration
Configure and invoke the uniquely named ak-storage integration for reviewed object upload, download, listing, deletion, existence checks, URL construction, and folder sync.