From 1a1abf5ee6f8c3a0e02d298ae2466ce0c320bde8 Mon Sep 17 00:00:00 2001 From: Serge Koenigsmann Date: Wed, 8 Jul 2026 03:23:59 +0200 Subject: [PATCH] feat: initial marketplace with gitea-tea plugin Co-Authored-By: Claude Opus 4.8 --- .claude-plugin/marketplace.json | 17 + README.md | 42 ++ plugins/gitea-tea/.claude-plugin/plugin.json | 8 + plugins/gitea-tea/skills/gitea-tea/SKILL.md | 529 +++++++++++++++++++ 4 files changed, 596 insertions(+) create mode 100644 .claude-plugin/marketplace.json create mode 100644 README.md create mode 100644 plugins/gitea-tea/.claude-plugin/plugin.json create mode 100644 plugins/gitea-tea/skills/gitea-tea/SKILL.md diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 0000000..f56b85a --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,17 @@ +{ + "name": "inmedias-claude-plugins", + "owner": { + "name": "inmedias.it", + "url": "https://gitea.inmedias.it/inmedias.it" + }, + "metadata": { + "description": "Claude Code Plugins für inmedias — Skills einzeln installierbar via /plugin install ." + }, + "plugins": [ + { + "name": "gitea-tea", + "source": "./plugins/gitea-tea", + "description": "Gitea über die tea-CLI verwalten: Issues, PRs, Releases, Repos vom Terminal." + } + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..0fb4607 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# inmedias Claude Code Plugins + +Geteilter Plugin-Marketplace für Claude Code. Jeder Skill ist ein eigenes Plugin +und kann einzeln installiert werden — niemand bekommt alles auf einmal. + +## Einrichtung (einmalig) + +```bash +/plugin marketplace add gitea.inmedias.it/inmedias.it/claude-plugins +``` + +## Plugin installieren + +```bash +/plugin install gitea-tea +``` + +Verfügbare Plugins listet `/plugin` bzw. `marketplace.json`. + +## Updates + +```bash +/plugin marketplace update inmedias-claude-plugins +``` + +## Neuen Skill hinzufügen + +1. Ordner `plugins//` anlegen mit: + - `.claude-plugin/plugin.json` (`name`, `version`, `description`) + - `skills//SKILL.md` +2. Eintrag in `.claude-plugin/marketplace.json` unter `plugins` ergänzen. +3. Committen und pushen. + +## Struktur + +``` +.claude-plugin/marketplace.json ← Liste aller Plugins +plugins/ + gitea-tea/ + .claude-plugin/plugin.json + skills/gitea-tea/SKILL.md +``` diff --git a/plugins/gitea-tea/.claude-plugin/plugin.json b/plugins/gitea-tea/.claude-plugin/plugin.json new file mode 100644 index 0000000..9cc13d9 --- /dev/null +++ b/plugins/gitea-tea/.claude-plugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "gitea-tea", + "version": "0.1.0", + "description": "Gitea über die tea-CLI verwalten: Issues, PRs, Releases, Repos vom Terminal.", + "author": { + "name": "inmedias.it" + } +} diff --git a/plugins/gitea-tea/skills/gitea-tea/SKILL.md b/plugins/gitea-tea/skills/gitea-tea/SKILL.md new file mode 100644 index 0000000..5b833ad --- /dev/null +++ b/plugins/gitea-tea/skills/gitea-tea/SKILL.md @@ -0,0 +1,529 @@ +--- +name: gitea-tea +description: Manage Gitea via CLI. Use when user mentions "tea", "gitea cli", or needs terminal-based Gitea operations. +version: 1.0.0 +--- + +# Gitea CLI (tea) + +## Overview + +Official command-line interface for Gitea. Manage issues, PRs, releases, and repos from terminal. + +## Instructions + +1. **Verify authentication**: Run `tea whoami` to confirm login +2. **Check context**: Run in git repo for auto-detection, or use `--repo owner/repo` +3. **Use non-interactive mode**: Use `--output` flag (on list/object commands) and provide all arguments +4. **Choose operation**: See command reference sections below + +## Installation + +```bash +# macOS +brew install tea + +# Linux (binary) +curl -sL https://dl.gitea.io/tea/main/tea-main-linux-amd64 -o tea +chmod +x tea && sudo mv tea /usr/local/bin/ + +# From source +go install code.gitea.io/tea@latest +``` + +## Authentication + +```bash +# Interactive login (recommended) +tea login add +# Select: Application Token +# Enter Gitea URL and token from User Settings → Applications + +# List logins +tea login list + +# Set default +tea login default gitea.example.com + +# Delete login +tea login delete gitea.example.com + +# Verify +tea whoami +``` + +## Issues + +### List Issues +```bash +# Open issues in current repo +tea issues list + +# All issues (including closed) +tea issues list --state all + +# Filter by milestone +tea issues list --milestone "v1.0.0" + +# Filter by assignee and labels +tea issues list --assignee username --label bug,critical + +# From specific repo +tea issues list --repo owner/repo --login gitea.com +``` + +### View Issue +```bash +# View issue with comments +tea issue 42 + +# Without comments +tea issue 42 --comments=false + +# Open in browser +tea open 42 +``` + +### Create Issue +```bash +# Interactive +tea issues create + +# With arguments +# NOTE: the body flag is --description/-d (NOT --body). Labels/assignees are plural. +tea issues create \ + --title "Fix authentication bug" \ + --description "Users cannot login with special characters" \ + --labels bug,security \ + --assignees developer1 \ + --milestone "v1.2.0" + +# From file +tea issues create \ + --title "Feature request" \ + --description "$(cat feature-request.md)" +``` + +### Modify Issues +```bash +# Close issue +tea issues close 42 + +# Reopen issue +tea issues reopen 42 + +# Edit issue +tea issues edit 42 \ + --title "Updated title" \ + --add-assignees newdev \ + --add-labels "enhancement" +``` + +## Pull Requests + +### List PRs +```bash +# Open PRs +tea pulls + +# Closed PRs +tea pulls --state closed + +# Filter by reviewer and labels +tea pulls --reviewer username --label "needs-review" +``` + +### View PR +```bash +# View PR details +tea pr 15 + +# Without comments +tea pr 15 --comments=false + +# Open in browser +tea open 15 +``` + +### Create PR +```bash +# Interactive +tea pulls create + +# With arguments +tea pulls create \ + --title "Implement user authentication" \ + --description "Adds OAuth and JWT support" \ + --base main \ + --head feature/auth \ + --assignee reviewer1,reviewer2 \ + --label "enhancement" + +# Description from file +tea pulls create \ + --title "Major refactor" \ + --description "$(cat pr-description.md)" +``` + +### Checkout PR +```bash +# Checkout PR locally +tea pulls checkout 20 + +# Custom branch name +tea pulls checkout 20 pr-20-custom-name + +# Clean up checked out PRs +tea pulls clean +``` + +### Review & Merge +```bash +# Approve PR +tea pulls approve 20 --comment "LGTM!" + +# Request changes +tea pulls reject 20 --comment "Please add tests" + +# Leave comment +tea pulls review 20 \ + --state comment \ + --comment "Consider refactoring this section" + +# Merge PR (squash) +tea pulls merge 20 --style squash --message "feat: implement auth" + +# Merge PR (rebase) +tea pulls merge 20 --style rebase + +# Close PR +tea pulls close 20 + +# Reopen PR +tea pulls reopen 20 +``` + +## Releases + +### List Releases +```bash +tea releases list +tea releases list --limit 10 +tea releases list --repo owner/project +``` + +### Create Release +```bash +# Basic release +tea releases create v1.0.0 \ + --title "Version 1.0.0" \ + --note "First stable release" + +# From changelog file +tea releases create v1.2.0 \ + --title "Version 1.2.0" \ + --note-file CHANGELOG.md + +# Draft release +tea releases create v2.0.0-beta \ + --title "Beta Release" \ + --draft \ + --note "Beta for testing" + +# With assets +tea releases create v1.1.0-rc1 \ + --title "Release Candidate 1" \ + --prerelease \ + --asset dist/binary-linux-amd64 \ + --asset dist/binary-darwin-amd64 + +# Create tag + release +tea releases create v1.3.0 \ + --target main \ + --title "Version 1.3.0" \ + --note "New features" +``` + +### Edit/Delete Release +```bash +# Update release +tea releases edit v1.0.0 \ + --title "Version 1.0.0 - Updated" \ + --note-file NEW-NOTES.md + +# Publish draft +tea releases edit v2.0.0 --draft=false + +# Delete release +tea releases delete v0.9.0 +tea releases delete v1.0.0-beta --confirm +``` + +## Labels + +```bash +# List labels +tea labels list +tea labels list --repo owner/project +tea labels list --save # Save labels to file + +# Create label +tea labels create bug \ + --color "#ff0000" \ + --description "Something isn't working" + +tea labels create enhancement \ + --color "0,255,0" \ + --description "New feature" + +# Update label +tea labels update bug --color "#cc0000" +tea labels update old-name --name new-name + +# Delete label +tea labels delete bug +``` + +## Milestones + +```bash +# List milestones +tea milestones list +tea milestones list --state open +tea milestones list --state closed + +# View milestone issues +tea milestones issues "v1.0.0" +tea milestones issues "v1.0.0" --kind pull # Only PRs +tea milestones issues "v1.0.0" --state all + +# Add issue/PR to milestone +tea milestones issues add "v1.0.0" 42 + +# Remove issue/PR from milestone +tea milestones issues remove "v1.0.0" 42 + +# Create milestone +tea milestones create "v2.0.0" \ + --description "Major version release" \ + --deadline "2024-12-31" + +# Close milestone +tea milestones close "v1.0.0" + +# Reopen milestone +tea milestones reopen "v1.0.0" + +# Delete milestone +tea milestones delete "v0.9.0" +``` + +## Repositories + +```bash +# List repos +tea repos list +tea repos list --org myorg +tea repos list --watched # Watched repos +tea repos list --starred # Starred repos +tea repos list --type fork # Filter: fork, mirror, source +tea repos list --output yaml + +# Search repos +tea repos search "keyword" --login gitea.com + +# View repo details +tea repos owner/repo + +# Create repo +tea repos create --name myrepo --private --init +tea repos create \ + --name myrepo \ + --owner myorg \ + --description "My project" \ + --private \ + --init \ + --gitignores Go \ + --license MIT + +# Create from template +tea repos create-from-template \ + --template owner/template-repo \ + --name new-repo + +# Fork repo +tea repos fork --repo owner/repo +tea repos fork --repo owner/repo --owner myorg + +# Delete repo +tea repos delete owner/repo + +# Clone repo (without git) +tea clone owner/repo +tea clone owner/repo ./target-dir +tea clone gitea.com/owner/repo # With host +``` + +## Time Tracking + +```bash +# List time entries +tea times list +tea times list --issue 42 +tea times list --user username +tea times list --from "2024-01-01" --until "2024-12-31" + +# Add time +tea times add 42 --time "2h" +tea times add 42 --time "1h30m" --message "Implemented auth logic" + +# Delete entry +tea times delete 42 --id 123 +``` + +## Notifications + +```bash +# List notifications (current repo) +tea notifications list + +# List all notifications +tea notifications list --mine + +# Filter by type +tea notifications list --types issue,pull + +# Filter by state +tea notifications list --states unread,pinned + +# Mark as read +tea notifications read # All filtered +tea notifications read 123 # Specific ID + +# Mark as unread +tea notifications unread 123 + +# Pin/unpin +tea notifications pin 123 +tea notifications unpin 123 +``` + +## Organizations + +```bash +# List organizations +tea organizations list + +# View organization details +tea organizations myorg + +# Create organization +tea organizations create myorg + +# Delete organization +tea organizations delete myorg +``` + +## Branches + +```bash +# List branches +tea branches list +tea branches list --output json + +# View branch details +tea branches main + +# Protect branch +tea branches protect main + +# Unprotect branch +tea branches unprotect main +``` + +## Comments + +```bash +# Add comment to issue or PR +tea comment 42 "This is my comment" + +# From specific repo +tea comment 42 "Comment text" --repo owner/repo +``` + +## Admin (requires admin access) + +```bash +# List users +tea admin users list +tea admin users list --output json +``` + +## Non-Interactive Mode (AI Agents) + +**IMPORTANT:** When using tea in AI agent environments (no TTY), avoid interactive prompts: + +```bash +# Use --output to disable interactive mode (list/object commands only, +# e.g. issues/pulls/repos/login list — NOT tea whoami, which has no --output) +tea issues --output simple +tea pulls --output json + +# Provide ALL required arguments upfront +# NOTE: body flag is --description/-d, NOT --body +tea issues create --title "Bug title" --description "Description here" +tea pulls create --title "PR title" --head feature-branch --base main + +# Use -y or --yes for confirmations +tea pr merge 5 --yes +tea releases delete v0.9.0 --yes + +# Set default login to avoid prompts +tea login default +``` + +**Always prefer explicit flags over interactive prompts.** + +## Guidelines + +### Do +- Use `--output simple` or `--output json` for non-interactive mode +- Provide all required arguments upfront to avoid prompts +- Run `tea whoami` to verify authentication before operations +- Use `tea open ` to quickly view in browser + +### Don't +- Use interactive commands in AI agent context (no TTY) +- Forget `--repo owner/repo` when outside git repository +- Skip `--yes` flag for destructive operations in scripts +- Use `tea login add` interactively (configure beforehand) + +## Examples + +### Example: Feature Branch → PR +```bash +git checkout -b feature/new-feature +# ... make changes ... +git add . && git commit -m "feat: add new feature" +git push -u origin feature/new-feature +tea pulls create --title "Add new feature" --base main --head feature/new-feature +``` + +### Example: Review & Merge PR +```bash +tea pulls checkout 20 +# ... review code ... +tea pulls approve 20 --comment "LGTM!" +tea pulls merge 20 --style squash +``` + +### Example: Create Release with Assets +```bash +git tag v1.0.0 +git push origin v1.0.0 +tea releases create v1.0.0 \ + --title "v1.0.0" \ + --note-file CHANGELOG.md \ + --asset dist/app-linux \ + --asset dist/app-darwin +```