Skip to content
Back to skills

Gitea

ASecurity

Gitea operations via gitea-mcp and tea CLI. Use when user mentions: gitea, tea, or when git remote shows a Gitea instance.

  • 57 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added May 31, 2026
documentationbashdockergitapidocumentation

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned May 31, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill gitea --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gitea?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gitea
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-gitea/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-gitea)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gitea
description: "Gitea operations via gitea-mcp and tea CLI. Use when user mentions: gitea, tea, or when git remote shows a Gitea instance."
---

# Gitea Skill

This plugin provides two ways to interact with Gitea:

1. **gitea-mcp** (preferred) - MCP server providing 80+ tools for direct API integration
2. **tea CLI** (fallback) - Command-line interface for Gitea operations

## When to Use This Skill

Activate this skill when:
- User mentions "gitea", "tea", or Gitea-related operations
- Working with repositories hosted on Gitea instances (not GitHub/GitLab)
- Managing issues, pull requests, releases, or repos
- Automating Gitea workflows

**Detection**: Run `git remote -v` to check if the remote URL points to a Gitea instance (doesn't contain `github.com` or `gitlab`).

## Tool Selection Priority

### 1. Try gitea-mcp First (Preferred)

The MCP server provides 80+ tools for:
- Repository management (create, fork, list, search)
- Issues and PRs (CRUD, comments, reviews)
- Branches, tags, and releases
- File operations (read/write)
- Actions (workflows, secrets, runs)
- Organizations and teams
- Wiki pages

**Requirements:**
- `GITEA_ACCESS_TOKEN` environment variable set
- `gitea-mcp` binary installed and in PATH

### 2. Fall Back to tea CLI When:

- `GITEA_ACCESS_TOKEN` is not set
- gitea-mcp tools return authentication errors
- MCP server is not available
- User explicitly requests tea CLI

### 3. If Both Fail, Offer to Install

If both gitea-mcp and tea CLI are unavailable or fail:
1. Inform the user about the issue
2. Ask if they want help installing the requirements
3. Refer to the plugin README for installation instructions

## Authentication

### For gitea-mcp (environment variable)

```bash
export GITEA_ACCESS_TOKEN=your_token
export GITEA_HOST=https://your-gitea-instance.com  # optional, default: https://gitea.com
```

### For tea CLI (interactive login)

```bash
# Check existing logins
tea login list

# Add new login (interactive)
tea login add
```

**Generate tokens**: Gitea web UI → Settings → Applications → Generate New Token

## Behavioral Guidelines

1. **Try MCP First**: Attempt gitea-mcp tools before falling back to tea CLI
2. **Before PR Creation**: Check for uncommitted changes with `git status`
3. **Before CI Operations**: Verify pipeline status before triggering new runs
4. **Machine-Readable Output**: When using tea CLI, use `-o json` or `-o yaml` flags for automation
5. **Custom SSH Remotes**: Always use `--repo owner/repo` flag when remote URL is non-standard (see below)

## Handling Custom SSH Remotes

**Problem**: tea CLI auto-detects the repository from git remote URLs, but fails with custom SSH aliases like:
- `ngit@gitea:owner/repo.git`
- `git@custom-host:owner/repo.git`
- Any non-standard SSH URL format

**Error**: `Error: path segment [0] is empty`

**Solution**: Always specify the repo explicitly with `--repo owner/repo`:

```bash
# Check remote URL format first
git remote -v

# If remote uses custom SSH alias (e.g., ngit@gitea:...), always use --repo
tea pr create --repo owner/repo --title "Title" --description "Description"
tea issue list --repo owner/repo
tea pr list --repo owner/repo

# Standard URLs (git@gitea.com:...) work without --repo
tea pr create --title "Title" --description "Description"
```

**Detection**: Run `git remote -v` at the start. If the URL doesn't match standard patterns (`git@gitea.com:` or `https://gitea.com/`), extract `owner/repo` from the path and use `--repo` for all tea commands.

---

## tea CLI Reference (Fallback)

Use these commands when gitea-mcp is unavailable or returns errors.

### Pull Requests

| Operation | Command |
|-----------|---------|
| Create PR | `tea pr create --title "Title" --description "Description"` |
| List PRs | `tea pr list` |
| List open PRs | `tea pr list --state open` |
| View PR | `tea pr view <id>` |
| Checkout PR | `tea pr checkout <id>` |
| Merge PR | `tea pr merge <id>` |
| Close PR | `tea pr close <id>` |
| Reopen PR | `tea pr reopen <id>` |
| Review PR | `tea pr review <id> --approve` |
| Clean merged branches | `tea pr clean` |

### Issues

| Operation | Command |
|-----------|---------|
| Create issue | `tea issue create --title "Title" --body "Description"` |
| List issues | `tea issue list` |
| List open issues | `tea issue list --state open` |
| List closed issues | `tea issue list --state closed` |
| View issue | `tea issue view <id>` |
| Close issue | `tea issue close <id>` |
| Reopen issue | `tea issue reopen <id>` |
| Add comment | `tea issue comment <id> "Comment text"` |
| Edit issue | `tea issue edit <id> --title "New Title"` |

### Repositories

| Operation | Command |
|-----------|---------|
| Clone repo | `tea repo clone <owner/repo>` |
| Fork repo | `tea repo fork <owner/repo>` |
| Create repo | `tea repo create --name <name>` |
| Create from template | `tea repo create-from-template <template-owner/repo> --name <name>` |
| List repos | `tea repos list` |
| Search repos | `tea repos search <query>` |

### Releases

| Operation | Command |
|-----------|---------|
| List releases | `tea release list` |
| Create release | `tea release create --tag <tag> --title "Title"` |
| Delete release | `tea release delete <tag>` |

### Labels

| Operation | Command |
|-----------|---------|
| List labels | `tea label list` |
| Create label | `tea label create --name "bug" --color "#ff0000"` |
| Delete label | `tea label delete <name>` |
| Export labels | `tea label export` |

### Milestones

| Operation | Command |
|-----------|---------|
| List milestones | `tea milestone list` |
| Create milestone | `tea milestone create --title "v1.0"` |
| Close milestone | `tea milestone close <name>` |

### Organizations

| Operation | Command |
|-----------|---------|
| List orgs | `tea org list` |
| View org | `tea org view <name>` |

### Notifications

| Operation | Command |
|-----------|---------|
| List notifications | `tea notifications` |
| Mark as read | `tea notifications --mark-read` |

### Time Tracking

| Operation | Command |
|-----------|---------|
| List time entries | `tea times list` |
| Add time | `tea times add <issue-id> <duration>` |
| Delete time | `tea times delete <id>` |

### Authentication

| Operation | Command |
|-----------|---------|
| List logins | `tea login list` |
| Add login | `tea login add` |
| Set default | `tea login default <name>` |
| Delete login | `tea login delete <name>` |

## Output Formats

Tea supports multiple output formats for automation:

```bash
# JSON output
tea issue list -o json
tea pr list -o json

# YAML output
tea issue list -o yaml

# Simple/minimal output
tea issue list -o simple
```

## Common Workflows

### Create a Pull Request

```bash
# Check for uncommitted changes first
git status

# Check remote URL format
git remote -v

# If using custom SSH remote (e.g., ngit@gitea:...), use --repo explicitly
tea pr create --repo owner/repo --title "Add new feature" --description "This PR adds..."

# For standard remotes, --repo is optional
tea pr create --title "Add new feature" --description "This PR adds..."

# Or interactively
tea pr create
```

### Work on an Issue

```bash
# View the issue
tea issue view 42

# Checkout related PR if exists
tea pr checkout 42

# Add a comment
tea issue comment 42 "Working on this now"

# Close when done
tea issue close 42
```

### Quick Repository Setup

```bash
# Clone a repository
tea repo clone owner/repo

# Or fork first then clone
tea repo fork owner/repo
tea repo clone your-username/repo
```

### CI/Actions Secrets

```bash
# List secrets
tea repo secrets list

# Add a secret
tea repo secrets add <name> <value>

# Delete a secret
tea repo secrets delete <name>
```

## Global Flags

| Flag | Description |
|------|-------------|
| `-l, --login` | Use a specific login |
| `-r, --repo` | Override repository |
| `-o, --output` | Output format (simple, table, csv, tsv, yaml, json) |
| `--remote` | Use specific git remote |

## Installation

```bash
# macOS
brew install tea

# Arch Linux
pacman -S tea

# Alpine
apk add tea

# From binary
# Download from https://dl.gitea.com/tea/

# Docker
docker pull gitea/tea
```

## Resources

- Official Repository: https://gitea.com/gitea/tea
- Documentation: https://docs.gitea.com/usage/command-line
- Downloads: https://dl.gitea.com/tea/

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.