# Tsuba - Scaffold marketplace-ready Claude Code skills and plugins

> Go CLI that generates valid Claude Code plugin directories and standalone SKILL.md files. Every scaffolded plugin ships with correct `plugin.json`, a sample skill, LICENSE, and README, and passes Hanko validation on the first run.

**Trust pledge:** Zero network calls in the binary by default. Embedded `text/template` sources for every generator are vendored into the binary, so scaffolding works fully offline.

- HTML page: https://roninforge.org/tsuba
- Source: https://github.com/RoninForge/tsuba
- License: MIT

## Why "Tsuba"

Tsuba (鍔) is the guard on a katana - the disc between blade and handle that lets a swordsman grip the weapon safely and hand it off cleanly. tsuba the tool does the same for your plugin: gives it a handle marketplaces can accept cleanly.

## Install

    curl -fsSL https://roninforge.org/tsuba/install.sh | sh

For `tsuba validate` you also need Hanko on PATH:

    curl -fsSL https://roninforge.org/hanko/install.sh | sh

Or via Homebrew:

    brew install roninforge/tap/tsuba
    brew install roninforge/tap/hanko

Single static Go binary. Supports macOS arm64/amd64, Linux amd64/arm64, Windows amd64.

## Quick start

    # Scaffold a full plugin directory.
    tsuba scaffold plugin my-plugin

    # Scaffold a standalone skill (no plugin wrapper).
    tsuba scaffold skill my-skill

    # Validate via Hanko.
    tsuba validate

    # Inspect environment (whether Hanko is installed, git config picked up author fields, etc).
    tsuba doctor

    # List supported marketplace targets.
    tsuba list marketplaces

## What Tsuba scaffolds today

- **Full Claude Code plugin directory:** `.claude-plugin/plugin.json` (correct schema, author fields auto-populated from `git config`), a sample skill in the right subdirectory, LICENSE, and README.
- **Standalone SKILL.md** under `skills/<name>/` for users who want a skill without a full plugin wrapper.

Hook and agent scaffolding ships in v0.2.

## Validation

`tsuba validate` shells out to Hanko and surfaces the result. Tsuba does not duplicate the validation logic - it delegates to the sibling tool that already does it well.

## What Tsuba does NOT do

- Does not submit your plugin. Tsuba scaffolds and validates locally. Marketplace submission is a separate step.
- Does not phone home by default.
- Does not duplicate Hanko. `tsuba validate` requires Hanko on PATH.

## Roadmap

`tsuba publish` (v0.2) will add per-marketplace overlays for buildwithclaude directory conventions and cc-marketplace stricter required fields, plus a one-command publish flow.
