Files
2026-03-13 05:12:51 +00:00

340 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: gitea-manager
description: 管理 Gitea 仓库的全能工具支持仓库创建删除、文件操作、分支管理、Issue/PR 管理、组织和用户操作、仓库设置配置等。使用场景:(1) 创建或删除 Gitea 仓库 (2) 管理仓库文件和目录 (3) 操作分支和保护规则 (4) 创建和管理 Issue 和 Pull Request (5) 管理组织和团队成员 (6) 配置 Webhook 和 Deploy Key (7) 搜索仓库和 Issue。必需环境变量GITEA_URL实例地址和 GITEA_TOKENAPI 令牌)。
---
# Gitea Manager
## 快速开始
### 环境配置
使用此 skill 前需要配置 Gitea 连接信息:
```bash
export GITEA_URL="https://gitea.example.com"
export GITEA_TOKEN="your-api-token-here"
```
可以通过以下方式获取 API Token
1. 登录 Gitea
2. 进入「设置」→「应用」
3. 创建新的 API Token
### 初始化客户端
在 Python 代码中使用:
```python
import sys
sys.path.append("/root/.claude/skills/gitea-manager/scripts")
from gitea_client import GiteaClient
client = GiteaClient()
```
或指定自定义配置:
```python
client = GiteaClient(url="https://gitea.example.com", token="your-token")
```
## 仓库操作
### 列出仓库
```python
repos = client.list_my_repos()
for r in repos:
print(f"{r['full_name']}: {r.get('description', '')}")
```
### 创建仓库
```python
repo = client.create_repo(
name="my-new-repo",
description="这是一个新仓库",
private=False,
auto_init=True
)
```
### 在组织下创建仓库
```python
repo = client.create_org_repo(
org="my-org",
name="org-repo",
description="组织仓库",
private=True
)
```
### 获取仓库信息
```python
repo = client.get_repo("owner", "repo-name")
```
### 删除仓库
```python
client.delete_repo("owner", "repo-name")
```
## 文件操作
### 读取文件内容
```python
content = client.get_file_content("owner", "repo", "path/to/file.txt", ref="main")
```
### 获取文件信息
```python
info = client.get_file_info("owner", "repo", "path/to/file.txt", ref="main")
```
### 创建或更新文件
```python
client.create_or_update_file(
owner="owner",
repo="repo",
path="new-file.txt",
content="文件内容",
message="添加新文件",
branch="main",
email="user@example.com",
name="Username"
)
```
### 删除文件
```python
info = client.get_file_info("owner", "repo", "file.txt")
client.delete_file(
owner="owner",
repo="repo",
path="file.txt",
message="删除文件",
branch="main",
sha=info["sha"],
email="user@example.com",
name="Username"
)
```
### 列出目录
```python
files = client.list_directory("owner", "repo", "path/to/dir", ref="main")
```
## 分支操作
### 列出分支
```python
branches = client.list_branches("owner", "repo")
```
### 获取分支信息
```python
branch = client.get_branch("owner", "repo", "main")
```
### 创建分支
```python
client.create_branch("owner", "repo", "new-branch", "main")
```
### 删除分支
```python
client.delete_branch("owner", "repo", "old-branch")
```
### 设置分支保护
```python
client.set_protected_branch(
owner="owner",
repo="repo",
branch="main",
enable_push=True,
enable_push_whitelist=["developers"],
require_pull_request=True,
require_approvals=2
)
```
## Issue 操作
### 列出 Issue
```python
issues = client.list_issues("owner", "repo", state="open")
```
### 创建 Issue
```python
issue = client.create_issue(
owner="owner",
repo="repo",
title="Bug: 登录失败",
body="详细描述问题..."
)
```
### 更新 Issue
```python
client.update_issue("owner", "repo", issue_index, title="新标题", state="closed")
```
### 添加评论
```python
comment = client.create_issue_comment("owner", "repo", issue_index, "这是我的评论")
```
## Pull Request 操作
### 列出 PR
```python
pulls = client.list_pulls("owner", "repo", state="open")
```
### 创建 PR
```python
pr = client.create_pull(
owner="owner",
repo="repo",
title="Add new feature",
body="PR 描述...",
head="feature-branch",
base="main"
)
```
### 合并 PR
```python
client.merge_pull("owner", "repo", pr_index, merge_style="merge")
```
## 组织操作
### 列出组织
```python
orgs = client.list_orgs()
```
### 列出组织仓库
```python
repos = client.list_org_repos("my-org")
```
### 创建组织
```python
org = client.create_org(
username="new-org",
email="org@example.com"
)
```
### 列出组织团队
```python
teams = client.list_org_teams("my-org")
```
## Webhook 操作
### 列出 Webhook
```python
hooks = client.list_hooks("owner", "repo")
```
### 创建 Webhook
```python
hook = client.create_hook(
owner="owner",
repo="repo",
config={"url": "https://example.com/webhook", "secret": "secret"},
events=["push", "issue", "pull_request"],
active=True
)
```
### 删除 Webhook
```python
client.delete_hook("owner", "repo", hook_id)
```
## Deploy Key 操作
### 列出 Deploy Key
```python
keys = client.list_deploy_keys("owner", "repo")
```
### 创建 Deploy Key
```python
key = client.create_deploy_key(
owner="owner",
repo="repo",
title="my-deploy-key",
key="ssh-rsa AAAA...",
read_only=True
)
```
### 删除 Deploy Key
```python
client.delete_deploy_key("owner", "repo", key_id)
```
## 搜索操作
### 搜索仓库
```python
repos = client.search_repos("keyword", limit=20)
```
### 搜索 Issue
```python
issues = client.search_issues("owner", "repo", "bug", limit=20)
```
## 命令行使用
脚本也支持命令行调用:
```bash
python gitea_client.py list-repos
python gitea_client.py get-repo owner/repo
python gitea_client.py create-repo my-repo "描述"
python gitea_client.py delete-repo owner/repo
```