Convert the standalone `tea` skill into a skills-dir plugin so commands are
namespaced and an enforcement hook can ship with it:
- /tea:login — pin the project Gitea login into .claude/settings.local.json
- /tea:use — tea CLI reference (was the old root SKILL.md), with the
login rule slimmed since the hook now enforces it
- hooks/tea-guard.sh — PreToolUse(Bash) guard: blocks any `tea` command that
touches Gitea unless it carries --login and $GITEA_LOGIN is set. Exempts
`tea logins list` and `tea --version/--help` so /tea:login can bootstrap.
References moved under skills/use/references/. `claude plugin validate` passes;
guard unit-tested across allow/block cases.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.8 KiB
tea CLI — HELPERS
See ./index.md for global options and common flags shared by all commands.
tea open, o
Open the current repository/context in a web browser.
tea notifications (aliases: notification, n)
Defaults to the current repo; --mine/-m aggregates across all your repos. Fields: id,status,updated,index,type,state,title,repository. Filters: --types/-t {issue|pull|repository|commit}, --states/-s {pinned|unread|read} (default: unread,pinned).
ls, listread, r [all | <id>]unread, u [all | <id>]pin, p [all | <id>]unpin [all | <id>]
tea clone, C <repo-slug> [target-dir]
Clone without requiring a local git install. Accepts slug forms: gitea/tea, tea, gitea.com/gitea/tea, git@gitea.com:gitea/tea, https://gitea.com/gitea/tea, ssh://gitea.com:22/gitea/tea. A host in the slug overrides --login. Options: --depth/-d, --login/-l.
tea api <endpoint>
Authenticated HTTP request to the Gitea API. Endpoints are auto-prefixed with /api/v1/ unless they start with /api/ or http(s)://. Placeholders {owner} and {repo} are filled from the repo context.
--method/-X {GET|POST|PUT|PATCH|DELETE}(default GET; switches to POST automatically when a body is provided)--field/-f key=value— string field on body (repeatable).--Field/-F key=value— typed field (numbers, booleans, null, JSON arrays/objects);@fileor@-(stdin);"null"forces literal string.--data/-d— raw JSON body (@file/@-). Incompatible with-f/-F.--header/-H key:value(repeatable)--include/-i— write status + response headers to stderr.--output/-o <file>— write response body to file (-= stdout).- Quote the endpoint if it contains
?or&to prevent shell expansion.