tufty.aitufty.ai CLI

Skills

The tufty tool skills for agents: getting them, setup, and how they call the CLI.

A skill packs one tool's use cases, command, output format and error handling into a SKILL.md, so an agent reliably reaches for the right tufty command at the right moment instead of working out the flags each time. There is one skill per studio tool.

The skills

SkillNameTypeCommand
tufty-pet-dressup宠物换装 Pet Dress-UpImagetufty pet-dressup
tufty-image-to-video图转视频 Image to VideoVideotufty image-to-video

Each skill ships in English (SKILL.md) and Chinese (SKILL-cn.md).

Getting the skills

The skills are coming to ClawHub under the publisher tufty-ai. Once they're live, install them in OpenClaw by name, for example:

openclaw skills install tufty-ai/tufty-pet-dressup

Until then, use the skill files in the skills/ directory of the source repository, tufty-ai/tufty-cli.

Setup

  1. The host needs Node.js 18+ with npm / npx. The skills pin their install command to a version, npm install -g @tufty/cli@1.1.1; npx @tufty/cli@1.1.1 <command> works too.
  2. Authenticate once on the host: run tufty login, or set TUFTY_API_KEY. Skills store no key of their own and use the machine's CLI credentials. See Authentication.

The skills declare tufty.ai and static.tufty.ai as the domains they reach, and ~/.tufty/config.json as their config file.

How a skill calls the CLI

When a skill triggers, the agent follows its instructions:

  1. run tufty <tool> -h to read the current flags;
  2. if the user hasn't agreed to the cost yet, add --dry-run to estimate credits;
  3. run the command and read result.outputs[].url from the JSON envelope on stdout;
  4. on insufficient_balance, tell the user they're out of credits and give the top-up link; on unauthorized or no_api_key, point them to where to get an API key.

The Pet Dress-Up skill, for instance, comes down to an ordinary CLI command:

tufty pet-dressup --product ./sweater.jpg --model ./corgi.jpg --quality medium --ratio 1:1

Help text and prices inside a skill are taken from the tool manifest when the skill is generated. If prices change afterwards, tufty tools describe <id> has the current ones.

On this page