Package skill as installable zip (Gitea Actions) #2

Merged
Chris Farhood merged 2 commits from ci/skill-zip-release into main 2026-07-20 23:27:24 +00:00
Owner

Adds a reproducible way to package the cycling-training skill as a .zip that installs directly in Claude Desktop / claude.ai (Settings → Skills) or Claude Code.

What's here

  • scripts/build-skill-zip.sh [version] — stages SKILL.md + README.md + references/ + assets/ into dist/cycling-training-<version>.zip. The archive's single top-level cycling-training/ folder (SKILL.md at its root) is the layout Claude expects on import. Validates that SKILL.md carries name/description frontmatter and fails loudly otherwise. Runs locally too.
  • .gitea/workflows/release-skill.yml — Gitea Actions workflow:
    • push a tag v* → builds the zip and attaches it to a Gitea release for that tag (via the Gitea API using the automatic GITHUB_TOKEN).
    • manual workflow_dispatch → builds the zip and uploads it as a run artifact.
  • README — documents the packaging/release flow and the Claude Desktop zip-import path.
  • .gitignore — ignores dist/ build output.

Verified locally

scripts/build-skill-zip.sh v1.0.0 produces a valid 15-file zip with cycling-training/ as the sole top-level entry. Workflow YAML lint-checks clean.

Ops requirements (Gitea side)

  • A registered Actions runner (image with bash/zip/curl, e.g. catthehacker/ubuntu).
  • Actions enabled for the repo (Settings → Actions).
  • Automatic GITHUB_TOKEN with contents:write — granted via the workflow's permissions: block on Gitea ≥ 1.20.

Also in this change

The merged feat/cycling-training-skills branch was deleted (local + remote) before this branch was cut.

🤖 Generated with Claude Code

https://claude.ai/code/session_01TqrhBhC3GEcKyaw8RTk8G6

Adds a reproducible way to package the `cycling-training` skill as a `.zip` that installs directly in **Claude Desktop / claude.ai** (Settings → Skills) or Claude Code. ## What's here - **`scripts/build-skill-zip.sh [version]`** — stages `SKILL.md` + `README.md` + `references/` + `assets/` into `dist/cycling-training-<version>.zip`. The archive's single top-level `cycling-training/` folder (SKILL.md at its root) is the layout Claude expects on import. Validates that SKILL.md carries `name`/`description` frontmatter and fails loudly otherwise. Runs locally too. - **`.gitea/workflows/release-skill.yml`** — Gitea Actions workflow: - push a tag `v*` → builds the zip and **attaches it to a Gitea release** for that tag (via the Gitea API using the automatic `GITHUB_TOKEN`). - manual `workflow_dispatch` → builds the zip and uploads it as a **run artifact**. - **README** — documents the packaging/release flow and the Claude Desktop zip-import path. - **`.gitignore`** — ignores `dist/` build output. ## Verified locally `scripts/build-skill-zip.sh v1.0.0` produces a valid 15-file zip with `cycling-training/` as the sole top-level entry. Workflow YAML lint-checks clean. ## Ops requirements (Gitea side) - A registered Actions runner (image with bash/zip/curl, e.g. `catthehacker/ubuntu`). - Actions enabled for the repo (Settings → Actions). - Automatic `GITHUB_TOKEN` with `contents:write` — granted via the workflow's `permissions:` block on Gitea ≥ 1.20. ## Also in this change The merged `feat/cycling-training-skills` branch was deleted (local + remote) before this branch was cut. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01TqrhBhC3GEcKyaw8RTk8G6
Chris Farhood added 1 commit 2026-07-20 23:23:53 +00:00
Add a reproducible way to build the Claude-skill package and publish it:

- scripts/build-skill-zip.sh: stages SKILL.md + README + references/ + assets/
  into a zip whose single top-level cycling-training/ folder is the layout
  Claude Desktop / claude.ai import expects. Validates SKILL.md frontmatter.
- .gitea/workflows/release-skill.yml: on tag v* builds the zip and attaches it
  to a Gitea release (via the API using the automatic token); on manual
  dispatch uploads it as a run artifact.
- README: document the packaging/release flow and Claude Desktop zip-import.
- .gitignore: ignore dist/ build output.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqrhBhC3GEcKyaw8RTk8G6
Chris Farhood added 1 commit 2026-07-20 23:26:45 +00:00
- Release step now authenticates with the RELEASE_TOKEN Actions secret
  (repo write) instead of the automatic token; drop the now-unneeded
  permissions block.
- Add a step that publishes the skill zip to the Gitea generic packages
  registry (cycling-training-skill@<tag>) using the REGISTRY_TOKEN secret,
  handling 200/201/409 responses.
- README: document the registry download URL and both secrets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqrhBhC3GEcKyaw8RTk8G6
Chris Farhood merged commit 98bde394db into main 2026-07-20 23:27:24 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: farhoodlabs/cycling-training#2