Publishing Your Instrument
Once your instrument is built and tested, you can publish it to the Tango marketplace so other users can discover and install it directly from the app.
Prerequisites
Section titled “Prerequisites”- GitHub CLI installed and authenticated:
# Installbrew install gh
# Authenticategh auth login- A valid instrument manifest — run
bun run validateto check before publishing.
How Publishing Works
Section titled “How Publishing Works”The Tango marketplace is backed by a single GitHub repository: MartinGonzalez/tango-instruments. It contains a tango.json index file that lists every available instrument.
When you run publish, the CLI:
- Validates your manifest
- Bumps your
package.jsonversion - Forks
tango-instrumentsto your GitHub account - Copies your source files into the fork
- Updates
tango.jsonto include your instrument - Opens a pull request for review
Once the PR is merged, your instrument appears in the Browse panel inside Tango.
Publish
Section titled “Publish”From your instrument directory:
bun run publishThis bumps the patch version by default. You can specify a different bump level:
bun run publish patch # 0.1.0 → 0.1.1 (default)bun run publish minor # 0.1.0 → 0.2.0bun run publish major # 0.1.0 → 1.0.0Example Output
Section titled “Example Output”[publish] Checking prerequisites...[publish] Validating instrument...[publish] Version bumped to 0.2.0[publish] Instrument: My Instrument (my-instrument)[publish] Forking MartinGonzalez/tango-instruments...[publish] Cloning fork...[publish] Copying instrument files...[publish] Pushing to fork...
[publish] PR created: https://github.com/MartinGonzalez/tango-instruments/pull/42Updating an Existing Instrument
Section titled “Updating an Existing Instrument”Run bun run publish again. The CLI detects that your instrument already exists in tango.json and force-pushes the updated branch. If a PR is already open, it gets updated automatically — no duplicate PRs.
[publish] PR updated (force-pushed): https://github.com/MartinGonzalez/tango-instruments/pull/42What Gets Published
Section titled “What Gets Published”The CLI copies your entire project directory except these files:
| Excluded | Reason |
|---|---|
node_modules/ | Reinstalled by users |
dist/ | Rebuilt on install |
.git/ | Not needed |
.claude/ | Local config |
.env | Secrets |
.DS_Store | OS artifact |
bun.lock / bun.lockb | Regenerated on install |
Everything else is included: src/, package.json, test/, config files, etc.
Pre-Publish Checklist
Section titled “Pre-Publish Checklist”Before publishing, make sure:
-
bun run validatepasses with no errors -
bun run buildsucceeds -
bun testpasses - Your
package.jsonhas a meaningfuldescriptionin the manifest - You’ve set a
category(developer-tools,productivity,media,communication,finance,utilities) - Your
permissionsarray only includes what you actually need - No secrets or credentials in your source files
What Happens After Merge
Section titled “What Happens After Merge”Once your PR is merged into tango-instruments:
- The Tango app fetches the updated
tango.jsonwhen users open the Browse panel - Your instrument appears in the catalog with the name, description, icon, and category from your manifest
- Users click Install — the app clones just your instrument’s subdirectory, runs
bun install && bun run build, and registers it - The instrument is ready to use