Detect changed Tessl tiles, derive semantic version bumps from Conventional Commits, review and lint each changed tile, then publish to the Tessl registry. It can also commit the published tile.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 tiles on
push - Publishes all tiles on
workflow_dispatch - Maps changed files back to the nearest owning
tile.json - Derives the next bump per tile from commit messages:
BREAKING CHANGE:ortype(scope)!:->majorfeat:->minor- everything else ->
patch
- Probes
tessl tile publish --dry-runand keeps incrementing patch versions until Tessl accepts a free version - Commits published
tile.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
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 tiles
uses: uinaf/tessl-publish-action@v2.1.1
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 tile folders |
review-threshold |
90 |
Threshold passed to tessl skill review --threshold |
dry-run-max-attempts |
50 |
Max version attempts per tile before giving up |
publish-all |
false |
Force publishing all tiles regardless of event diff |
commit-version-bumps |
true |
Commit published tile.json version bumps back to the branch |
version-bump-commit-message |
chore: sync published tile 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 tile directories selected for this run |
versions |
JSON object of successfully published tile versions keyed by tile directory |
failures |
JSON array of per-tile 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.