mcpField
T
tigris-bucket-management

tigris-bucket-management

github.com/tigrisdataCloud & DevOps2125 installsUpdated 14w ago
Repository

About tigris-bucket-management

tigris-bucket-management is a skill for managing the lifecycle of Tigris object-storage buckets, aimed at developers working with buckets in code. It covers creation, listing, inspection, and deletion, along with access, region, consistency, and storage-tier options.

Key features

  1. 01Create and configure buckets
  2. 02List buckets
  3. 03Inspect bucket information
  4. 04Delete buckets
  5. 05Set access, region, and storage tier

Use cases

  1. 01Create private or public buckets for an application
  2. 02Check bucket details before deletion
  3. 03Choose a region based on data locality
  4. 04Configure snapshot options for a bucket

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/tigrisdata/skills --skill tigris-bucket-management

After installing, type/tigris-bucket-managementin Claude Code to confirm it loaded.

Bundled filesmetadata.jsonREADME.md

Details

From the project README

Tigris Bucket Management

Prerequisites

Before doing anything else, install the Tigris CLI if it's not already available:

tigris help || npm install -g @tigrisdata/cli

If you need to install it, tell the user: "I'm installing the Tigris CLI (@tigrisdata/cli) so we can work with Tigris object storage."

Overview

Buckets are containers for objects. This skill covers bucket lifecycle: create, list, inspect, and delete.

Quick Reference

OperationFunctionKey Parameters
CreatecreateBucket(name, options)name, access, region, enableSnapshot
ListlistBuckets(options)limit, paginationToken
InspectgetBucketInfo(name)bucketName
DeleteremoveBucket(name, options)bucketName, force

Create Bucket

import { createBucket } from "@tigrisdata/storage";

// Simple private bucket
const result = await createBucket("my-new-bucket");
if (result.error) {
  console.error("Error:", result.error);
} else {
  console.log("Created:", result.data);
}

// Public bucket (objects readable by anyone)
const result = await createBucket("public-assets", {
  access: "public",
});

// Snapshot-enabled bucket (for version control)
const result = await createBucket("my-snapshot-bucket", {
  enableSnapshot: true,
});

// Regional bucket
const result = await createBucket("eu-data", {
  region: "eu",
});

// Fork from existing bucket snapshot
const result = await createBucket("my-forked-bucket", {
  sourceBucketName: "parent-bucket",
  sourceBucketSnapshot: "1751631910169675092",
});

Create Bucket Options

OptionValuesDefaultPurpose
accesspublic/privateprivateObject readability
consistencydefault/strictdefaultRead consistency level
defaultTierSTANDARD/STANDARD_IA/GLACIER/GLACIER_IRSTANDARDDefault storage tier
enableSnapshotbooleanfalseEnable snapshots/forking
regionstringglobalBucket region
sourceBucketNamestring-Fork from this bucket
sourceBucketSnapshotstring-Fork from this snapshot

Note: Snapshot-enabled buckets must use STANDARD tier.

List Buckets

import { listBuckets } from "@tigrisdata/storage";

// List all buckets
const result = await listBuckets();
if (result.error) {
  console.error("Error:", result.error);
} else {
  console.log("Buckets:", result.data?.buckets);
  console.log("Owner:", result.data?.owner);
}

// Paginated list
const allBuckets = [];
let currentPage = await listBuckets({ limit: 10 });
allBuckets.push(...currentPage.data?.buckets);

while (currentPage.data?.paginationToken) {
  currentPage = await listBuckets({
    limit: 10,
    paginationToken: currentPage.data?.paginationToken,
  });
  allBuckets.push(...currentPage.data?.buckets);
}

Get Bucket Info

import { getBucketInfo } from "@tigrisdata/storage";

const result = await getBucketInfo("my-bucket");
if (result.error) {
  console.error("Error:", result.error);
} else {
  console.log("Info:", result.data);
  // {
  //   isSnapshotEnabled: true,
  //   hasForks: false,
  //   sourceBucketName: undefined,
  //   sourceBucketSnapshot: undefined
  // }
}

Delete Bucket

import { removeBucket } from "@tigrisdata/storage";

// Delete empty bucket
const result = await removeBucket("my-bucket");
if (result.error) {
  console.error("Error:", result.error);
} else {
  console.log("Deleted successfully");
}

// Force delete (even if not empty)
const result = await removeBucket("my-bucket", {
  force: true,
});

Warning: Force delete is irreversible. All objects will be lost.

Bucket Access Levels

LevelBehaviorUse Case
privateObjects require authDefault, sensitive data
publicObjects publicly readableStatic assets, public content

Consistency Levels

LevelBehaviorTrade-off
defaultLow latency, eventual consistencyMost workloads
strictStrong consistency, higher latencyCritical data

Storage Tiers

TierUse CaseCost
STANDARDGeneral purposeStandard
STANDARD_IAInfrequently accessedLower cost
GLACIERLong-term archiveLowest cost
GLACIER_IRRare access, fast retrievalArchive with occasional access

Regions

Specify region for data locality or compliance:

await createBucket("data-eu", { region: "eu" });
await createBucket("data-asia", { region: "asia-south-1" });

Leave empty for global bucket (recommended for most use cases).

Common Mistakes

MistakeFix
Enable snapshot with non-STANDARD tierSnapshot requires STANDARD tier
Not checking bucket exists before deleteUse getBucketInfo first
Trying to delete non-empty bucket without forceUse force: true or empty bucket first
Name conflictsBucket names must be globally unique

Forking and Snapshots

For version control (snapshots/forking), see the tigris-snapshots-forking skill.

Comments

Markdown supported