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.

  • 42 stars
  • 0 votes
  • 0 copies
  • 3 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…