fix(gitea): restore routing and sourcing content the retrofit dropped
gitea-issues asserted flatly that a merge never closes an issue, contradicting gitea-prs' references/merging.md, which documents that closing keywords in commits landing on the default branch do close one. The qualifier that made the claim true had been deleted; both sides now agree. gitea-releases had lost an epistemic hedge and its verification step, leaving conventions.md asserting unconfirmed tag auto-creation as fact. Nothing in the research corpus sources it, so the hedge and the verify-afterward instruction are back rather than upgraded. Descriptions were cut 50-240 chars under the 400 budget and shed routing with them: gitea-workflow's boundary named no target, gitea-prs lost the issue/PR number-space directive the suite is built around at 163/400, gitea-releases lost its boundary and every trigger. Restored, inside budget. Also restores delete_branch's hard-refusal strength and gitea-files' Read/Write/Edit pointer. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EJJrm5YmacbwMdzZpXcoti
This commit is contained in:
@@ -2,9 +2,11 @@
|
||||
name: gitea-releases
|
||||
|
||||
description: >
|
||||
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". Not branches or commit history -> `gitea-branches`.
|
||||
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`.
|
||||
|
||||
compatibility: 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
|
||||
@@ -55,7 +57,7 @@ If origin is not set or the URL is not a Gitea URL, stop and report: "No Gitea r
|
||||
|
||||
`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, and semver with a `v` prefix is a tooling convention rather than a Gitea constraint.
|
||||
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
|
||||
|
||||
@@ -63,7 +65,7 @@ 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. |
|
||||
| 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. |
|
||||
|
||||
@@ -12,11 +12,20 @@ additional tool schemas.
|
||||
|
||||
## Release wraps a tag, not the reverse
|
||||
|
||||
A release is a title, body (notes), and draft/prerelease flags layered on top of an existing or
|
||||
newly-created tag. The tag is the git-level object (a name pointing at a commit); the release is a
|
||||
Gitea-level metadata wrapper around it. This is why `delete_release` and `delete_tag` are separate
|
||||
calls with separate identifiers (numeric id vs. tag name) — removing the wrapper never implies
|
||||
removing the underlying pointer, and vice versa.
|
||||
A release is a title, body (notes), and draft/prerelease flags layered on top of a tag. The tag is
|
||||
the git-level object (a name pointing at a commit); the release is a Gitea-level metadata wrapper
|
||||
around it. This is why `delete_release` and `delete_tag` are separate calls with separate
|
||||
identifiers (numeric id vs. tag name) — removing the wrapper never implies removing the underlying
|
||||
pointer, and vice versa.
|
||||
|
||||
### Whether `create_release` creates a missing tag is unconfirmed
|
||||
|
||||
`create_release` takes both `tag_name` and `target` (a commitish), and that shape *suggests* Gitea
|
||||
creates the tag at `target` when `tag_name` does not already exist. That is inferred from the API
|
||||
shape, not confirmed by any source this skill was built from (`references/sources.md`) — so treat it
|
||||
as an assumption, not behaviour. When the caller depends on the tag existing, verify it afterward
|
||||
with `get_tag` (or `list_tags`) rather than reporting it as created. `create_tag` is the only call
|
||||
confirmed to create one.
|
||||
|
||||
## Semver tag naming
|
||||
|
||||
|
||||
Reference in New Issue
Block a user