- Move tea/ → skills/tea/ so the plugin loader can find the skill - Add .claude-plugin/plugin.json with name, version, description, author, keywords - Add MIT LICENSE file - Update README with marketplace install command and corrected manual install paths Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
275 lines
8.3 KiB
Markdown
275 lines
8.3 KiB
Markdown
---
|
|
name: tea
|
|
description: >
|
|
Full operability with the `tea` CLI — the official command-line tool for Gitea.
|
|
Use this skill whenever the user wants to interact with a Gitea instance: managing
|
|
issues, pull requests, repos, releases, branches, labels, milestones, notifications,
|
|
actions (CI/CD), webhooks, organizations, time tracking, or making raw API calls.
|
|
Trigger on any mention of tea CLI, Gitea operations, or self-hosted git workflows
|
|
even if the user doesn't explicitly say "tea" — e.g., "open a PR on my Gitea",
|
|
"list issues on my self-hosted git", "create a release", "check CI runs".
|
|
---
|
|
|
|
# tea — Gitea CLI
|
|
|
|
`tea` is the official CLI for Gitea. It handles everything: issues, PRs, repos,
|
|
releases, CI actions, webhooks, and more. It can also make raw authenticated API
|
|
calls for anything not covered by a dedicated subcommand.
|
|
|
|
**Quick reference of all commands:** see `references/commands.md`
|
|
|
|
---
|
|
|
|
## How tea finds context
|
|
|
|
When run inside a git repo directory, `tea` automatically detects:
|
|
- Which Gitea instance to talk to (from the git remote URL)
|
|
- Which repo to operate on (owner/name from the remote)
|
|
|
|
This means most commands just work in-context. Flags to override when needed:
|
|
- `--repo owner/name` or `-r` — target a different repo
|
|
- `--login name` or `-l` — use a specific saved login
|
|
- `--remote name` or `-R` — pick which git remote to use for login discovery
|
|
|
|
---
|
|
|
|
## Authentication
|
|
|
|
Logins are stored in `~/.config/tea/config.yml`.
|
|
|
|
```bash
|
|
tea logins list # show saved logins
|
|
tea logins add # add a new Gitea server (interactive)
|
|
tea logins add --url https://git.example.com --token TOKEN --name myserver
|
|
tea logins default --name myserver # set default login
|
|
tea logins edit --name myserver # update an existing login
|
|
tea logins delete --name myserver # remove a login
|
|
tea whoami # show current logged-in user
|
|
```
|
|
|
|
---
|
|
|
|
## Issues
|
|
|
|
```bash
|
|
tea issues # list open issues (current repo)
|
|
tea issues list --state all # all states: open, closed, all
|
|
tea issues list --assignee me --label bug
|
|
tea issues 42 # show issue #42 with details
|
|
tea issues create # interactive create
|
|
tea issues create --title "Bug" --body "Description" --label bug --assignee alice
|
|
tea issues edit 42 --title "New title" --assignee bob
|
|
tea issues close 42
|
|
tea issues reopen 42
|
|
tea comment 42 "This is a comment" # add a comment
|
|
```
|
|
|
|
Fields printable with `--fields`: `index,title,state,author,milestone,labels,body,comments,created,updated`
|
|
|
|
---
|
|
|
|
## Pull Requests
|
|
|
|
```bash
|
|
tea pulls # list open PRs
|
|
tea pulls 7 # show PR #7 in detail
|
|
tea pulls create --title "feat: X" --head feature-branch --base main
|
|
tea pulls checkout 7 # check out PR #7 locally
|
|
tea pulls review 7 # interactive review
|
|
tea pulls approve 7 # approve
|
|
tea pulls reject 7 # request changes
|
|
tea pulls merge 7 # merge
|
|
tea pulls edit 7 --assignee alice --milestone v2
|
|
tea pulls close 7
|
|
tea pulls reopen 7
|
|
tea pulls clean 7 # delete local + remote branch after close
|
|
```
|
|
|
|
---
|
|
|
|
## Repositories
|
|
|
|
```bash
|
|
tea repos # list your repos
|
|
tea repos list --owner myorg # list org repos
|
|
tea repos list --starred # your starred repos
|
|
tea repos search "keyword" # search across the instance
|
|
tea repos create --name myrepo --private
|
|
tea repos fork owner/repo # fork a repo
|
|
tea repos migrate --url https://github.com/owner/repo --name localname
|
|
tea repos edit --private=false # make current repo public
|
|
tea repos delete owner/repo # delete (irreversible — confirm with user)
|
|
tea clone owner/repo # clone without needing local git
|
|
```
|
|
|
|
---
|
|
|
|
## Branches
|
|
|
|
```bash
|
|
tea branches # list branches
|
|
tea branches main # show branch detail
|
|
tea branches protect main # protect a branch
|
|
tea branches unprotect main
|
|
```
|
|
|
|
---
|
|
|
|
## Labels
|
|
|
|
```bash
|
|
tea labels # list labels
|
|
tea labels create --name "bug" --color "#ee0701" --description "Something broken"
|
|
tea labels update --name "bug" --color "#cc0000"
|
|
tea labels delete --name "bug"
|
|
tea labels --save # save label set to file (for reuse)
|
|
```
|
|
|
|
---
|
|
|
|
## Milestones
|
|
|
|
```bash
|
|
tea milestones # list open milestones
|
|
tea milestones create --title "v2.0" --due "2025-12-31"
|
|
tea milestones close "v1.0"
|
|
tea milestones reopen "v1.0"
|
|
tea milestones delete "v1.0"
|
|
tea milestones issues "v2.0" # list issues/PRs in a milestone
|
|
```
|
|
|
|
---
|
|
|
|
## Releases
|
|
|
|
```bash
|
|
tea releases # list releases
|
|
tea releases create --tag v1.0.0 --title "v1.0.0" --note "Release notes"
|
|
tea releases create --tag v1.0.0 --draft --prerelease
|
|
tea releases edit v1.0.0 --note "Updated notes"
|
|
tea releases delete v1.0.0
|
|
|
|
# Release assets
|
|
tea releases assets list --tag v1.0.0
|
|
tea releases assets create --tag v1.0.0 --asset ./build/app.tar.gz
|
|
tea releases assets delete --tag v1.0.0 --asset app.tar.gz
|
|
```
|
|
|
|
---
|
|
|
|
## Actions (CI/CD)
|
|
|
|
```bash
|
|
# Workflow runs
|
|
tea actions runs # list recent runs
|
|
tea actions runs view 123 # view run details
|
|
tea actions runs logs 123 # view run logs
|
|
tea actions runs cancel 123 # cancel a run
|
|
|
|
# Secrets
|
|
tea actions secrets list
|
|
tea actions secrets set SECRET_NAME --value "secret-value"
|
|
tea actions secrets delete SECRET_NAME
|
|
|
|
# Variables
|
|
tea actions variables list
|
|
tea actions variables set VAR_NAME --value "value"
|
|
tea actions variables delete VAR_NAME
|
|
|
|
# Workflows
|
|
tea actions workflows list
|
|
```
|
|
|
|
---
|
|
|
|
## Notifications
|
|
|
|
```bash
|
|
tea notifications # unread + pinned notifications (current repo)
|
|
tea notifications --mine # all repos
|
|
tea notifications read # mark all as read
|
|
tea notifications read 42 # mark specific notification as read
|
|
tea notifications pin 42
|
|
tea notifications unpin 42
|
|
```
|
|
|
|
---
|
|
|
|
## Organizations
|
|
|
|
```bash
|
|
tea orgs # list your orgs
|
|
tea orgs create --name myorg
|
|
tea orgs delete myorg
|
|
```
|
|
|
|
---
|
|
|
|
## Webhooks
|
|
|
|
```bash
|
|
tea webhooks list
|
|
tea webhooks list --org myorg # org webhooks
|
|
tea webhooks create --url https://hook.example.com --events push,pull_request
|
|
tea webhooks update <id> --active=false
|
|
tea webhooks delete <id>
|
|
```
|
|
|
|
---
|
|
|
|
## Time Tracking
|
|
|
|
```bash
|
|
tea times # list times on current repo
|
|
tea times --mine # all your tracked time across repos
|
|
tea times add 42 "1h30m" # track time on issue #42
|
|
tea times delete <time-id>
|
|
tea times reset 42 # reset all tracked time on issue #42
|
|
tea times list --total # show total at end
|
|
```
|
|
|
|
---
|
|
|
|
## Raw API Access
|
|
|
|
For anything not covered by a subcommand, `tea api` makes authenticated calls:
|
|
|
|
```bash
|
|
tea api /repos/{owner}/{repo}/topics # GET (default)
|
|
tea api -X POST /repos/{owner}/{repo}/topics -f topic=golang # POST with field
|
|
tea api -X DELETE /repos/{owner}/{repo}/releases/123
|
|
tea api -d '{"body":"hello"}' /repos/{owner}/{repo}/issues/1/comments
|
|
tea api '/repos/{owner}/{repo}/issues?state=open&type=pulls' # quote URLs with ?
|
|
tea api --include /user # include response headers
|
|
```
|
|
|
|
Placeholders `{owner}` and `{repo}` are filled from the current git context.
|
|
|
|
---
|
|
|
|
## Helpers
|
|
|
|
```bash
|
|
tea open # open current repo in browser
|
|
tea clone owner/repo ./dest # clone a repo (no local git needed)
|
|
```
|
|
|
|
---
|
|
|
|
## Output formats
|
|
|
|
All list commands support `--output` / `-o`:
|
|
- `table` (default) — formatted table
|
|
- `simple` — minimal whitespace output
|
|
- `csv` / `tsv` — for scripts/pipes
|
|
- `json` / `yaml` — for programmatic use
|
|
|
|
---
|
|
|
|
## Tips
|
|
|
|
- Run `tea <command> --help` at any time for full flag details
|
|
- Use `--debug` / `--vvv` on any command to see API calls being made
|
|
- `tea api` is your escape hatch — any Gitea API endpoint is reachable
|
|
- For multi-instance setups, set `--login` explicitly or configure a default with `tea logins default`
|