Add gitea skill for configuration and repository management
This commit is contained in:
122
skills/gitea/SKILL.md
Normal file
122
skills/gitea/SKILL.md
Normal 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`
|
||||||
146
skills/gitea/references/gitea-config.md
Normal file
146
skills/gitea/references/gitea-config.md
Normal 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
|
||||||
Reference in New Issue
Block a user