3f25bb035f
Add `.gitea/workflows/issue-agent.yaml` + `tools/issue-agent/PROTOCOL.md`. On issue label/comment/close events a cheap filter step decides whether to act (anti-loop: ignores the bot's own actions; honours assigned-to-developer + `ready` / comment-on-`claude/blocked` / `closed`+`claude/*`), then runs Claude (opus, effort=max) to work the issue per the protocol, or cleans up a cancelled issue's branch/PR. Claude — and its API cost — only runs on actionable events. The agent can only ever open a PR (never merges, never pushes to development/main); on cancel (issue closed) the matching feature branch/PR is removed deterministically without the LLM. Requires repo Actions secrets ANTHROPIC_API_KEY + AGENT_GITEA_TOKEN (the `developer` PAT). Optional vars ISSUE_AGENT_MODEL / ISSUE_AGENT_EFFORT. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>