Tappify Extensions for VS Code
Validation, snippets and commands for building an extension that runs inside
Tappify.
What it does
- Validates
tappify.extension.json against the published manifest schema,
with completion on every field. A manifest with a $schema line uses the
hosted schema; one without falls back to the copy bundled here, so the file
validates with no network.
- Snippets for every contribution kind, typed with the
tap- prefix inside
tappify.extension.json: tap-manifest writes a whole manifest, and one
snippet per kind — tap-widget, tap-tab, tap-page, tap-row-action,
tap-settings, tap-marker, tap-series, tap-banner, tap-storage,
tap-procedure, tap-connector, tap-webhook, tap-tool, tap-mention,
tap-action, tap-knowledge, tap-skill, tap-prompt, tap-context and
tap-work — writes the entry where the caret is.
- Commands that run the Tappify CLI in the integrated terminal:
| Command |
Id |
Runs |
| Tappify: Start the dev server |
tappify.extension.dev |
tappify extension dev |
| Tappify: Run the checks |
tappify.extension.doctor |
tappify extension doctor |
| Tappify: Add a contribution |
tappify.extension.add |
tappify extension add <kind> |
| Tappify: Regenerate the types |
tappify.extension.types |
tappify extension types |
| Tappify: Publish a release |
tappify.extension.publish |
tappify extension publish |
Add a contribution asks which kind in the editor and passes it on the command
line; the CLI asks for the rest. Publish asks for nothing in the editor — the
CLI asks for the release notes in the terminal, where the text you type goes to
the CLI and not to your shell.
Each command runs in one terminal named Tappify, reused across commands, in
the first folder of the workspace. The ids are what a keybinding or a task
refers to.
Requirements
The Tappify CLI on your PATH:
curl -fsSL https://get.tappify.ai | sh
tappify login
On Node 20 or newer, npm i -g @tappify/cli installs the same CLI.
Notes
There is no file icon for tappify.extension.json. VS Code only offers one
through a full file icon theme, which would replace whatever theme you already
run; keeping the file in JSON mode is what makes schema validation and
completion work, and that is worth more.
Building it
pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
pnpm package
Releases
Pull requests and pushes to develop and main run the same type checks,
tests, build and VSIX packaging. develop is validation-only. Promote tested
changes from develop to main; a successful main build starts the stable
release workflow.
Versions and changelog entries are generated from
Conventional Commits. Use feat for a
minor release and fix, perf, improve, cont, refactor or revert for
a patch release. A commit with a BREAKING CHANGE footer creates a major
release. Documentation, style, test, build, CI, chore and work-in-progress
commits do not release. Do not edit the version in package.json manually.
The release workflow updates package.json and CHANGELOG.md, creates the git
tag and GitHub release, attaches the versioned VSIX, and publishes it to the VS
Code Marketplace.
Marketplace authentication
Marketplace publishing reads VSCE_PAT from the GitHub production
environment. The Azure DevOps token must grant the Marketplace Manage scope
to an account that can publish under the tappify publisher. Do not store the
token in repository files or as a command-line argument.
Azure DevOps retires global PATs on December 1, 2026. This PAT is a temporary
bridge until a supported Microsoft Entra publishing flow is implemented for
this repository.
Documentation
https://docs.tappify.ai/extensions