From bkit
Guides bkend.ai file storage operations: presigned URL uploads (single/multipart), CDN downloads, visibility management (public/private/protected/shared), buckets. Triggers on file upload/download queries.
npx claudepluginhub popup-studio-ai/bkit-claude-code --plugin bkitThis skill is limited to using the following tools:
| Method | Use Case | Process |
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
| Method | Use Case | Process |
|---|---|---|
| Single | Normal files | Presigned URL -> PUT upload -> Register metadata |
| Multiple | Multiple files | Repeat single upload |
| Multipart | Large files | Initialize -> Part URLs -> Complete |
| Level | Access | URL Type |
|---|---|---|
| public | Anyone | CDN URL (no expiry) |
| private | Owner only | Presigned URL (1 hour) |
| protected | Authenticated users | Presigned URL (1 hour) |
| shared | Specified targets | Presigned URL (1 hour) |
| Category | Max Size |
|---|---|
| Images | 10 MB |
| Videos | 100 MB |
| Documents | 20 MB |
images, documents, media, attachments
bkend MCP does NOT have dedicated storage tools. Use this workflow:
search_docs with query "file upload presigned url"search_docs with query "file upload code examples"| Doc ID | Content |
|---|---|
7_code_examples_data | CRUD + file upload code examples |
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/files/presigned-url | Generate presigned URL |
| POST | /v1/files | Register metadata (complete upload) |
| GET | /v1/files | File list |
| GET | /v1/files/:fileId | File detail |
| PATCH | /v1/files/:fileId | Update metadata |
| DELETE | /v1/files/:fileId | Delete file |
| POST | /v1/files/:fileId/download-url | Generate download URL |
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/files/multipart/init | Initialize multipart upload |
| POST | /v1/files/multipart/presigned-url | Get part upload URL |
| POST | /v1/files/multipart/complete | Complete multipart upload |
| POST | /v1/files/multipart/abort | Abort multipart upload |
1. POST /v1/files/presigned-url -> { url, fileId }
2. PUT {url} with file binary + Content-Type header
3. POST /v1/files with { fileId, filename, contentType, size, visibility }
1. POST /v1/files/multipart/init -> { uploadId }
2. POST /v1/files/multipart/presigned-url -> [{ partNumber, url }]
3. PUT each part URL with file chunk
4. POST /v1/files/multipart/complete -> { file }
For the latest storage documentation, use WebFetch: