En Windows el stdout de Python defaultea a cp1252 y crashea con
UnicodeEncodeError al imprimir literales no-ASCII (e.g. el ✓ del print
de éxito de pr-create.sh). El sintoma era que el PR se creaba OK pero
el script terminaba con exit 1 por el crash del print posterior.
Agrego export PYTHONIOENCODING=utf-8 después de set -euo pipefail en
los 10 scripts que invocan python (todos menos query.sh). Cubre tanto
las invocaciones inline como futuras sin tener que acordarse caso por
caso. Mantiene los literales unicode existentes (✓, →, ─, ⚠️).
skill-gitea
Skill local de Claude Code para
gitea.nucleoriofrio.com (Gitea 1.24, org NucleOS). Cubre PRs, creación
de repos, y la killer feature: introspección de Gitea Actions runs con
filtros precisos para no saturar la ventana de contexto.
Mirror público del directorio local
~/.claude/skills/gitea/en la PC del usuario humano. Existe para que el usuario pueda auditar lo que el bot hace contra su instancia de Gitea (creación de repos, PRs, lectura de logs). Clonar y correr en otra máquina no funciona out-of-the-box — requiere PAT del bot en.env(no incluido) y la skillbitwardenconfigurada para extraerlo.
Doc principal
Ver SKILL.md — diseño, modelo de seguridad (admin guard + anti-AI guard + visibilidad pública del bot), lifecycle, ejemplos.
Cheat sheet de endpoints en endpoints.md.
Estructura
.
├── SKILL.md ← docs canónicas
├── endpoints.md ← cheat sheet API Gitea 1.24
├── .env.example ← plantilla de config (PAT, bot user, etc.)
├── .gitignore
├── README.md ← este archivo
└── scripts/
├── setup.sh ← extrae PAT desde skill bitwarden + valida
├── query.sh ← helper REST con admin guard
├── pr-list.sh ← lista PRs (state filter)
├── pr-view.sh ← detalle de un PR
├── pr-comments.sh ← lista comments (requiere PAT con read:issue)
├── pr-create.sh ← crear PR (anti-AI guard + UTF-8 safe)
├── repo-create.sh ← crear repo (regla dura: bot user → siempre público)
├── actions-list-runs.sh ← lista runs (filtros client-side)
├── actions-view.sh ← detalle de un run + probe de job_id
└── actions-logs.sh ← logs con --tail/--head/--lines/--grep/--errors
Lo que NO está en este repo
.env(PAT del bot, base URL si fuera distinta a producción)
Vive solo en la PC del usuario humano. Se regenera con bash scripts/setup.sh
si el bot tiene la skill bitwarden con un item llamado "Gitea PAT
claude-agent-gitops".
Dependencias
- Python 3 (parsear JSON, escapar bodies UTF-8)
curl(Git Bash en Windows lo trae)- skill bitwarden sibling (para extraer el PAT en
setup.sh)