> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jaasskills.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Git-native release (CI)

> Release a skill from its own repo, on a tag push

A skill can live in its own git repo and release via CI instead of (or alongside) the [drafts workflow](/publishing/drafts-workflow). A tenant admin must first register the skill id + repo via `POST /api/v1/tenants/{tenantId}/repo-links`.

<CodeGroup>
  ```bash OIDC (preferred) theme={null}
  uv run jaasctl release . --tag v1.2.3 \
    --oidc-token "$OIDC_TOKEN" --api-url https://registry.example.com
  ```

  ```bash PAT (fallback) theme={null}
  uv run jaasctl release . --tag v1.2.3 \
    --token "$JAAS_PAT" --repo-url https://github.com/acme/my-skill --release-branch main
  ```
</CodeGroup>

A repo link can restrict which branches may release via `releaseBranches` (empty = no restriction). Because a git tag isn't reliably "on" one branch, the OIDC path proves the branch through the workflow job's `environment:` claim, checked against GitHub's own environment deployment policy — not something this platform tries to derive itself. The PAT path takes `--release-branch` at face value: a weaker, unverified guarantee, consistent with PAT being the fallback auth path throughout.
