Skip to main content
skill CX Codex

tigris-sdk-guide — Claude Code skill: pick the right Tigris SDK

Tells your agent which Tigris SDK or CLI to reach for: native packages for TypeScript, Go and Python, AWS-compatible clients for Ruby and PHP.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add tigrisdata/skills --skill tigris-sdk-guide -a claude-code
Open on GitHub

What tigris-sdk-guide does

The skill fires when a project needs to talk to Tigris object storage and the choice of client is still open. A decision table maps each language to its option: @tigrisdata/storage for TypeScript and JavaScript, github.com/tigrisdata/storage-go for Go, and the tigris-boto3-ext extension for Python instead of plain boto3. Ruby and PHP have no native path, so the agent falls back to aws-sdk-s3 or aws-sdk-php pointed at the Tigris endpoint.

The CLI gets its own section. The skill pushes tigris / t3 over aws s3, since forks, snapshots and tigris login exist only in the native tool. When the CLI is missing, it runs npm install -g @tigrisdata/cli and asks the agent to announce the install out loud.

AWS-compatible clients come with fixed settings: endpoint set to https://t3.storage.dev, region set to auto, plus force_path_style: true for Ruby and PHP. Skip path style and those two clients will not connect. Hardcoding a region breaks routing, which Tigris handles itself. From there the skill points the agent at the per-language files under ./resources/.

What it helps with

  • pick an SDK that matches the project language instead of defaulting to AWS
  • move existing scripts off aws s3 and onto tigris / t3
  • configure endpoint and region for an AWS-compatible client
  • wire Python to Tigris through the boto3 extension rather than raw boto3
  • find out where no native SDK exists and an AWS client is the only route

Example prompts for the agent

  • Which SDK should I use for Tigris in this Go project?
  • Swap the aws s3 calls in my scripts for tigris
  • Set up aws-sdk-php against the Tigris endpoint with path style

How to install tigris-sdk-guide

1Skills CLI (Vercel)

npx skills add tigrisdata/skills --skill tigris-sdk-guide -a claude-code

2Manually: put the files in place

~/.claude/skills/tigris-sdk-guide/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/tigris-sdk-guide/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about tigris-sdk-guide

How do I install tigris-sdk-guide in Claude Code?

Run npx skills add tigrisdata/skills --skill tigris-sdk-guide -a claude-code. The skill lands at ~/.claude/skills/tigris-sdk-guide/SKILL.md.

What does tigris-sdk-guide do?

It guides the agent through choosing between Tigris-native SDKs and AWS S3-compatible clients. You get a per-language breakdown and the cases where only an AWS SDK works.

Which languages have a native Tigris SDK?

TypeScript and JavaScript use @tigrisdata/storage, Go uses github.com/tigrisdata/storage-go, and Python uses the tigris-boto3-ext extension. Ruby and PHP have no native option and go through an AWS SDK with the Tigris endpoint.

Source text

SKILL.md · MIT
---
name: tigris-sdk-guide
description: Use when choosing between Tigris-native SDKs and AWS S3-compatible SDKs — covers which SDK to use per language, CLI preference, and when AWS SDKs are the only option
---

# Tigris SDK & CLI Guide

Always prefer Tigris-native SDKs and the Tigris CLI over AWS S3 SDKs. This guide explains what's available per language, when you must fall back to AWS SDKs, and how to configure them.

## Prerequisites

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

```bash
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."

## Decision Table

| Language | Tigris SDK/Extension | Package | Use AWS SDK? |
|----------|:-:|---------|----------|
| TypeScript/JS | **Native SDK** | `@tigrisdata/storage` | No |
| Go | **Native SDK** | `github.com/tigrisdata/storage-go` | No |
| Python | **boto3 extension** | `tigris-boto3-ext` | No — use the extension |
| Ruby | None yet | — | Yes — `aws-sdk-s3` with Tigris endpoint |
| PHP | None yet | — | Yes — `aws-sdk-php` with Tigris endpoint |
| CLI | **Native CLI** | `@tigrisdata/cli` (`tigris` / `t3`) | No |

**Rule:** Always prefer Tigris-native SDKs, the boto3 extension, and the Tigris CLI. Only use raw AWS S3 SDKs for Ruby and PHP where no Tigris option exists.

---

## CLI: Always Use `tigris` / `t3`

Use the Tigris CLI instead of `aws s3` for all object storage operations.

```bash
# ✅ Do this
tigris cp local-file.txt t3://my-bucket/file.txt
tigris ls t3://my-bucket/
tigris rm t3://my-bucket/old-file.txt

# ❌ Not this
aws s3 cp local-file.txt s3://my-bucket/file.txt
aws s3 ls s3://my-bucket/
aws s3 rm s3://my-bucket/old-file.txt
```

**Why:** The Tigris CLI supports features the AWS CLI doesn't — forks, snapshots, and native authentication via `tigris login`.

### Tigris-Only CLI Features

```bash
# Forks (copy-on-write clones) — not in AWS CLI
tigris forks create my-bucket my-fork

# Snapshots — not in AWS CLI
tigris snapshots take my-bucket
tigris snapshots list my-bucket

# Native auth — no AWS credentials needed
tigris login
tigris whoami
```

---

## Language-Specific SDK Guides

Read the resource file for your language:

- **TypeScript / JavaScript** — Read `./resources/typescript.md` for `@tigrisdata/storage` usage
- **Go** — Read `./resources/go.md` for `storage-go` usage (simplestorage + full client)
- **Python** — Read `./resources/python.md` for `tigris-boto3-ext` usage, or use the dedicated **tigris-python-sdk** skill (covers boto3 setup, Django via django-storages, snapshots, forks, in-place rename, and the Bundle API)
- **Ruby** — Read `./resources/ruby.md` for `aws-sdk-s3` with Tigris endpoint
- **PHP** — Read `./resources/php.md` for `aws-sdk-php` with Tigris endpoint

---

## S3-Compatible Configuration (All Languages)

When using any AWS SDK with Tigris, always set:

| Setting | Value | Why |
|---------|-------|-----|
| `endpoint` | `https://t3.storage.dev` | Tigris endpoint |
| `region` | `auto` | Tigris handles routing |
| `force_path_style` / `use_path_style_endpoint` | `true` | Required for Rails, PHP |

Environment variables for S3-compatible tools:

```bash
AWS_ENDPOINT_URL_S3=https://t3.storage.dev
AWS_REGION=auto
AWS_ACCESS_KEY_ID=tid_xxx
AWS_SECRET_ACCESS_KEY=tsec_yyy
```

---

## Critical Rules

**Always:**
- Use `tigris` / `t3` CLI instead of `aws s3`
- Use `@tigrisdata/storage` for TypeScript/JavaScript
- Use `github.com/tigrisdata/storage-go` for Go
- Use `tigris-boto3-ext` for Python (not raw `boto3`)
- Set `region: auto` and the Tigris endpoint when using AWS SDKs (Ruby, PHP)

**Never:**
- Use `@aws-sdk/client-s3` in JS/TS when `@tigrisdata/storage` is available
- Use the AWS Go SDK when `storage-go` is available
- Use raw `boto3` without `tigris-boto3-ext` when Tigris features are needed
- Forget `force_path_style: true` for Ruby and PHP
- Hardcode a specific AWS region (always use `auto`)

---

## Related Skills

- **file-storage** — Full `@tigrisdata/storage` SDK reference
- **tigris-python-sdk** — Python via boto3 + `tigris-boto3-ext`, Django uploads, snapshots, forks, Bundle API
- **tigris-s3-migration** — Migrating from AWS S3 SDKs to Tigris

## Official Documentation

- TypeScript SDK: https://www.tigrisdata.com/docs/sdks/tigris/
- Go SDK: https://pkg.go.dev/github.com/tigrisdata/storage-go
- S3 Compatibility: https://www.tigrisdata.com/docs/sdks/s3/

© tigrisdata · MIT · tigrisdata/skills

Similar skills

All skills for Cloud: AWS, Azure, GCP →

From the same set7

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor