# gitea-devtools Small dev tools for the Gitea / Sporel setup. Usable two ways: 1. **Directly in a shell** (any dev environment) — clone and run the scripts. 2. **As Claude Code skills** — `skills/` are symlinked into `~/.claude/skills/` and allowlisted, so the recurring privileged chains run without per-step permission prompts. ## Tools ### `gitea-api.sh` — read-only Gitea API helper ```bash ./gitea-api.sh /orgs/sporel/repos?limit=100 | jq '.[].full_name' ./gitea-api.sh repos/calic/claude-config ``` GET requests only — safe to allowlist. Path may omit the leading `/` and the `api/v1/` prefix. Pretty-prints via `jq` if present. ### `sporel-commit.sh` — multi-repo commit + push ```bash ./sporel-commit.sh --dry-run "wip" # preview ./sporel-commit.sh "lib-core: bump manifests to 0.4.0" ``` Commits every **dirty** local Sporel repo with one message, using each repo's **own last-commit author** (Sporel repos have mixed Calic/Axel Meyer authors; email always `axel.meyer@durania.net`), then pushes if ahead and not diverged. Diverged repos are reported, never force-pushed. CI fires on tags, not master pushes, so WIP pushes are safe. Pair with [`sporel-sync`](https://git.davoryn.de/calic/claude-config) (in claude-config) which handles pull/push reconciliation. ## Configuration (env vars) | Var | Default | Used by | |-----|---------|---------| | `GITEA_URL` | `http://localhost:3100` | gitea-api.sh — set to `https://git.davoryn.de` off-host | | `GITEA_TOKEN` | _(auto via docker `gitea` container)_ | gitea-api.sh — set this in dev environments without the container | | `GITEA_USER` | `calic` | gitea-api.sh | | `SPOREL_ROOT` | `/root/projects/Sporel` | sporel-commit.sh | In dev environments without the local `gitea` container, set `GITEA_URL` and a read-scope `GITEA_TOKEN`; `gitea-api.sh` then needs no docker access. ## Self-maintaining On failure each script prints the error + a diagnostic hint. If the output was insufficient to diagnose, improve the script and push this repo.