Detect changed Tessl plugins, derive semantic version bumps from Conventional Commits, review and lint each changed plugin, then publish to the Tessl registry. It can also commit the published .tessl-plugin/plugin.json version bumps back to the repo.
The action is implemented in TypeScript with the official GitHub Actions toolkit packages such as @actions/core, @actions/exec, and @actions/github, and is bundled with Vite+ via vp pack.
- Publishes only changed plugins on
push - Publishes all plugins on
workflow_dispatch - Maps changed files back to the nearest owning
.tessl-plugin/plugin.json - Derives the next bump per tile from commit messages:
BREAKING CHANGE:ortype(scope)!:->majorfeat:->minor- everything else ->
patch
- Probes
tessl plugin publish --dry-run --bump <type>and publishes withtessl plugin publish --bump <type> - Commits published
.tessl-plugin/plugin.jsonversion bumps back to the current branch by default withgithub-actions[bot]and a skip-CI commit message, or with a caller-provided bot identity
- Run
actions/checkoutbefore this action - Run
tesslio/setup-tesslbefore this action - Add a repository secret named
TESSL_TOKENin the consumer repo and pass it totesslio/setup-tessl - Run this action only from trusted publish events such as
pushto the release branch orworkflow_dispatch. The action refuses to publish frompull_requestandpull_request_target
name: Publish Skills
on:
push:
branches:
- main
paths:
- "skills/**"
workflow_dispatch:
permissions:
contents: write
id-token: write
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Tessl
uses: tesslio/setup-tessl@v2
with:
token: ${{ secrets.TESSL_TOKEN }}
- name: Publish changed plugins
uses: uinaf/tessl-publish-action@v2.2.0
with:
review-threshold: "90"
git-author-name: my-release-bot[bot]
git-author-email: 123456789+my-release-bot[bot]@users.noreply.github.com
git-committer-name: my-release-bot[bot]
git-committer-email: 123456789+my-release-bot[bot]@users.noreply.github.com| Name | Default | Description |
|---|---|---|
working-directory |
. |
Repository root to operate from |
skills-root |
skills |
Root directory containing plugin folders |
review-threshold |
90 |
Threshold passed to tessl review run --threshold |
dry-run-max-attempts |
50 |
Max version attempts per plugin before giving up |
publish-all |
false |
Force publishing all plugins regardless of event diff |
commit-version-bumps |
true |
Commit published .tessl-plugin/plugin.json version bumps back to the branch |
version-bump-commit-message |
chore: sync published plugin versions [skip ci] |
Commit message used for the bot-authored version bump sync commit |
git-author-name |
GIT_AUTHOR_NAME or github-actions[bot] |
Git author name for committed version bumps |
git-author-email |
GIT_AUTHOR_EMAIL or GitHub Actions noreply |
Git author email for committed version bumps |
git-committer-name |
GIT_COMMITTER_NAME or author name |
Git committer name for committed version bumps |
git-committer-email |
GIT_COMMITTER_EMAIL or author email |
Git committer email for committed version bumps |
| Name | Description |
|---|---|
tiles |
JSON array of plugin directories selected for this run. The output name is kept for backward compatibility. |
versions |
JSON object of successfully published plugin versions keyed by plugin directory |
failures |
JSON array of per-plugin failures |
This repo uses Vite+ for local verification and packaging:
vp installvp checkvp testvp packvp run release
semantic-release still owns tag and GitHub Release creation on main, with releases created by github-actions[bot]. Consumer repos should pin either an explicit release tag such as @v2.1.1 or the full commit SHA that backs that release.