Publishing an Extension
How to submit your extension to the extensions registry
Publishing your extension makes it available to all ted users via the marketplace and the ted ext install command.
Overview
The extensions registry is a GitHub repository. Publishing is done via a Pull Request — no accounts or tokens required beyond a GitHub account.
Step 1: Fork the Registry
Go to github.com/ted-industries/extensions and click Fork.
Clone your fork locally:
git clone https://github.com/<your-username>/extensions
cd extensionsStep 2: Add Your Extension
Create a new folder under registry/extensions/<your-extension-name>/:
registry/
└── extensions/
└── your-extension-name/
├── package.json # Required
├── index.js # Required (must match "main" field)
├── README.md # Recommended
└── icon.png # Optional — 128×128 PNGpackage.json Requirements
Your package.json must include these fields:
{
"name": "your-extension-name",
"displayName": "Your Extension",
"description": "A short description of what your extension does",
"version": "1.0.0",
"main": "index.js",
"author": "your-github-username",
"repository": "https://github.com/your-username/your-extension-repo",
"tags": ["productivity", "utility"]
}| Field | Required | Notes |
|---|---|---|
name | ✓ | Must match the folder name exactly |
version | ✓ | Semver format |
displayName | ✓ | Shown in the marketplace |
main | ✓ | Entry JS file (relative to extension folder) |
description | recommended | Shown in search results |
author | recommended | Your GitHub username |
repository | recommended | Link to your extension's source |
tags | recommended | Helps users find your extension |
Step 3: Validate Locally
Run the validator before opening a PR:
# From the repo root
bun scripts/validate.tsAll checks must pass:
- ✓ Required fields present
- ✓ Extension name matches folder name
- ✓
mainfile exists - ✓ No duplicate extension names
- ✓ Valid semver version
Step 4: Open a Pull Request
git add registry/extensions/your-extension-name/
git commit -m "feat: add your-extension-name extension"
git push origin mainThen open a Pull Request against ted-industries/extensions. The CI workflow will automatically run the validator on your PR.
Step 5: After Merge
Once your PR is merged:
- The
build-index.tsscript rebuildsregistry/extensions.json - The marketplace website rebuilds and shows your extension
- Users can install it with:
ted ext install your-extension-nameExtension Quality Guidelines
- Keep it focused — one extension, one purpose
- Handle errors gracefully — catch all async errors
- Avoid global state — clean up in
deactivate() - Test locally before submitting — copy your folder to
~/.ted/extensions/and restart ted
Updating Your Extension
To publish a new version:
- Bump the
versionfield inpackage.json(semver) - Update
README.mdwith a changelog entry - Open a new PR with your changes