Regenerates `plugins/*/skills`, `plugins/*/agents`, both per-plugin `plugin.json` manifests and the two marketplace mirrors from `.apm/` per ADR-0017, via `scripts/sync-plugin-content.sh --all`. The manifests matter beyond tidiness here: `plugin.json` carries the plugin version and wins over the marketplace entry at install time (calculatePluginVersion precedence). Until this ran, the patch bumps in the preceding commit were inert for anyone installing these plugins. ADR: 0017 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP
4.9 KiB
name, description, compatibility, metadata, allowed-tools
| name | description | compatibility | metadata | allowed-tools | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gitea-releases | Use when managing Gitea releases or the git tags underneath them — list, get, create, or delete either — even when the user does not say "release" or "Gitea": "cut a v1.2.0", "publish a prerelease", "tag this commit", "what's the latest release". Not branches or commit history -> `gitea-branches`. Not issues -> `gitea-issues`. Not pull requests -> `gitea-prs`. | Requires Gitea MCP server configured with a token with write:repository scope, which gates every release and tag tool here. Requires git remote "origin" pointing to the Gitea instance for owner/repo resolution, unless an orchestrating caller passes them already resolved. |
|
Bash mcp__gitea__list_releases mcp__gitea__get_release mcp__gitea__get_latest_release mcp__gitea__create_release mcp__gitea__delete_release mcp__gitea__list_tags mcp__gitea__get_tag mcp__gitea__create_tag mcp__gitea__delete_tag |
Gotchas
delete_releasetakes the numericid, never atag_name;delete_tagtakes the tag name, never an id. Holding only a tag name, resolve the release id throughlist_releasesorget_releasefirst — a tag name passed todelete_releasefails, and that failure is not evidence the release is already gone.- Deleting a release never deletes its tag, and the reverse direction is unconfirmed — verify with
list_releases/get_releaseafterdelete_tag. Removing both takes two independent destructive calls. - Set
is_draft/is_pre_releaseexplicitly on everycreate_release— Gitea infers neither from a-beta/-rctag name, sov2.0.0-beta.1publishes as a full release and becomes the repo's latest.draft/prereleaseare output field names only; passingdraftas an input key is silently ignored. list_releases/list_tagsdefaultper_pageto 20, where most other gitea-mcp list tools default to 30 — a caller assuming 30 under-counts pages.
Step 1 — Resolve owner and repo
owner and repo are required on every tool below. Extract them from the git remote, unless an orchestrating caller passed them in already:
rtk git remote get-url origin
If origin is not set or the URL is not a Gitea URL, stop and report: "No Gitea remote found — set origin to your Gitea instance URL."
Step 2 — Dispatch
| Action | Tool | Required params | Optional params |
|---|---|---|---|
| List releases | list_releases |
owner, repo |
is_draft, is_pre_release, page (default 1), per_page (default 20) |
| Get one release | get_release |
owner, repo, id (number) |
— |
| Get latest release | get_latest_release |
owner, repo |
— |
| Create release | create_release |
owner, repo, tag_name, target, title |
body, is_draft, is_pre_release |
| Delete release | delete_release |
owner, repo, id (number) |
— |
| List tags | list_tags |
owner, repo |
page (default 1), per_page (default 20) |
| Get one tag | get_tag |
owner, repo, tag_name |
— |
| Create tag | create_tag |
owner, repo, tag_name |
target, message |
| Delete tag | delete_tag |
owner, repo, tag_name |
— |
target (on create_release/create_tag) is a commitish — a branch name, existing tag, or commit SHA — the point the new tag is cut from.
Pass a caller-supplied tag_name through verbatim — the API accepts any string; semver is convention, not constraint.
Step 3 — Procedure for the scenario in hand
These four are mutually exclusive — pick the one row the request lands on.
| Scenario | Procedure |
|---|---|
| Create a release | Call create_release with tag_name, target, title, and is_draft/is_pre_release set explicitly — never left to default. This surface carries no update or edit tool, so a wrong flag is repairable only by delete-and-recreate (references/conventions.md). A separate create_tag is only needed to tag a commit without wrapping it in a release — whether create_release creates a missing tag is unconfirmed, so verify with get_tag. |
| Delete a release | Resolve the numeric id per the first Gotcha, confirm intent, then call delete_release. The tag survives. |
| Delete a tag along with its release | Delete the release first, then call delete_tag — confirm both are intended before proceeding, since each is irreversible on its own. |
| List every page | Loop page: 1, 2, 3... until a response returns fewer than per_page entries. Nothing here auto-paginates. |
If exact input params or response field shapes are needed, read references/call-signatures.md. If the caller raises semver tag naming, draft/prerelease semantics, release-notes sourcing, or how a release relates to its tag, read references/conventions.md.