Add gitea skill for configuration and repository management

This commit is contained in:
2026-03-09 10:15:52 +08:00
parent 3f93dbb5a9
commit 5d7eea3120
2 changed files with 268 additions and 0 deletions

122
skills/gitea/SKILL.md Normal file
View File

@@ -0,0 +1,122 @@
---
name: gitea
description: Gitea integration and repository management. Use when user needs to: (1) Configure Gitea connection and SSH access, (2) Create and manage Gitea repositories, (3) Set up Git global configuration, (4) Push/pull code from Gitea, (5) Add SSH keys to Gitea account. Handles SSH key generation, Gitea API operations, and Git workflow automation.
---
# Gitea
## Overview
Manage Gitea self-hosted Git service integration, including SSH key setup, repository creation, and Git configuration for seamless workflow.
## Core Capabilities
### 1. Initial Configuration
- Set up Git global config (user.name, user.email)
- Generate SSH key pair (ED25519 preferred)
- Configure SSH to use custom port (default: 4022)
- Add SSH public key to Gitea via API
### 2. Repository Management
- Create new repositories via Gitea API
- Initialize local git repository
- Configure git remote (origin)
- Create initial commit with .gitignore
### 3. SSH Connection
- Configure SSH host in ~/.ssh/config
- Add host to known_hosts
- Test SSH connection to Gitea
- Push code to remote repository
## Configuration File
See [references/gitea-config.md](references/gitea-config.md) for:
- Current Gitea server details
- SSH configuration
- API access information
- Git global settings
## Workflow: Full Setup
### Step 1: Git Global Configuration
```bash
git config --global user.name "username"
git config --global user.email "email@example.com"
```
### Step 2: Generate SSH Key
```bash
ssh-keygen -t ed25519 -C "email@example.com" -f ~/.ssh/id_ed25519 -N ""
```
### Step 3: Add SSH Key to Gitea
```bash
# Read public key
cat ~/.ssh/id_ed25519.pub
# Add via API
curl -X POST "http://GITEA_URL/api/v1/user/keys" \
-H "Authorization: token ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"KEY_NAME","key":"PUBLIC_KEY"}'
```
### Step 4: Configure SSH
Add to ~/.ssh/config:
```
Host GITEA_IP
HostName GITEA_IP
Port SSH_PORT
User git
IdentityFile ~/.ssh/id_ed25519
```
### Step 5: Create Repository
```bash
curl -X POST "http://GITEA_URL/api/v1/user/repos" \
-H "Authorization: token ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"REPO_NAME","description":"DESC","private":false}'
```
### Step 6: Initialize Git
```bash
git init
git add .
git commit -m "Initial commit"
git remote add origin git@GITEA_IP:username/repo.git
git push -u origin main
```
## API Reference
### Gitea API Base
- URL: `http://GITEA_IP:PORT/api/v1`
### Key Endpoints
- **Add SSH Key**: `POST /api/v1/user/keys`
- **Create Repo**: `POST /api/v1/user/repos`
- **List Repos**: `GET /api/v1/user/repos`
- **Get Repo**: `GET /api/v1/repos/{owner}/{repo}`
See [references/gitea-config.md](references/gitea-config.md) for current server details and access tokens.
## SSH Connection Test
```bash
ssh -T -p SSH_PORT git@GITEA_IP
# Expected: "Hi there, username! You've successfully authenticated..."
```
## Troubleshooting
### SSH "Host key verification failed"
Add host to known_hosts:
```bash
ssh-keyscan -p SSH_PORT GITEA_IP >> ~/.ssh/known_hosts
```
### Git "Permission denied"
- Verify SSH key is added to Gitea
- Check ~/.ssh/config has correct port and user
- Test SSH connection with `ssh -T git@GITEA_IP`

View File

@@ -0,0 +1,146 @@
# Gitea Configuration
## Server Information
- **Gitea URL**: http://192.168.120.110:4000/
- **Repository URL**: http://192.168.120.110:4000/xiaohei/openclaw-workspace
- **SSH Host**: 192.168.120.110
- **SSH Port**: 4022
- **API Base**: http://192.168.120.110:4000/api/v1
## User Credentials
- **Username**: xiaohei
- **Full Name**: 小黑
- **Email**: xiaohei@foshanhuiya.com
- **Password**: n4wwxyv6
- **Access Token**: 6699d6170be2d53b09517bff89ac27ecece2784e
## SSH Configuration
### SSH Key
- **Key Type**: ED25519
- **Private Key**: ~/.ssh/id_ed25519
- **Public Key**: ~/.ssh/id_ed25519.pub
- **Gitea Key ID**: 4
- **Gitea Key Name**: OpenClaw-MacBook
- **Fingerprint**: SHA256:HT3VEaNgK1k2a3XplAMJ0WnL2u+K5qsHWcs2k1yDCHw
### ~/.ssh/config
```
Host 192.168.120.110
HostName 192.168.120.110
Port 4022
User git
IdentityFile ~/.ssh/id_ed25519
```
## Git Global Configuration
```ini
[user]
name = xiaohei
email = xiaohei@foshanhuiya.com
```
## Repository Information
### Remote Repository
- **Owner**: xiaohei
- **Repository Name**: openclaw-workspace
- **Private**: No
- **SSH URL**: git@192.168.120.110:xiaohei/openclaw-workspace.git
- **HTTP URL**: http://192.168.120.110:4000/xiaohei/openclaw-workspace.git
- **Default Branch**: main
### Local Repository
- **Location**: /Users/hexcode/.openclaw/workspace
- **Remote**: origin
- **Current Branch**: main
- **Status**: Tracking origin/main
## Initial Commit
- **Commit Hash**: 3f93dbb
- **Message**: Initial commit: OpenClaw workspace setup
- **Files**: 13 files, 833 insertions
## Gitignore
Current .gitignore includes:
```
# OpenClaw
.DS_Store
.venv/
__pycache__/
*.pyc
# Node
node_modules/
npm-debug.log
# Logs
*.log
# IDE
.vscode/
.idea/
*.swp
*.swo
```
## API Usage Examples
### Create New Repository
```bash
curl -X POST "http://192.168.120.110:4000/api/v1/user/repos" \
-H "Authorization: token 6699d6170be2d53b09517bff89ac27ecece2784e" \
-H "Content-Type: application/json" \
-d '{
"name":"new-repo",
"description":"New repository",
"private":false,
"auto_init":false
}'
```
### List SSH Keys
```bash
curl -X GET "http://192.168.120.110:4000/api/v1/user/keys" \
-H "Authorization: token 6699d6170be2d53b09517bff89ac27ecece2784e"
```
### Delete SSH Key
```bash
curl -X DELETE "http://192.168.120.110:4000/api/v1/user/keys/4" \
-H "Authorization: token 6699d6170be2d53b09517bff89ac27ecece2784e"
```
## Common Workflows
### Create and Push New Project
```bash
cd /path/to/project
git init
git add .
git commit -m "Initial commit"
git remote add origin git@192.168.120.110:xiaohei/repo-name.git
git push -u origin main
```
### Clone Existing Repository
```bash
git clone git@192.168.120.110:xiaohei/repo-name.git
```
### Push Changes
```bash
git add .
git commit -m "Update description"
git push
```
## Last Updated
- **Date**: 2026-03-09
- **Updated by**: OpenClaw workspace setup