Files
claude-plugins/plugins/redmine/skills/redmine/SKILL.md
T
skoandClaude Opus 5 6613c9ef29 redmine: News und Versionen steuerbar (0.2.0)
Übernimmt den Stand aus inmedias.it/dokumentierer (7097383). Beide
Fassungen waren bis hierhin byte-identisch und sollen es bleiben.

`news` liest, legt an und ändert; `versions` listet und legt an,
`create`/`update` nehmen `--version`.

Der Hinweis in SKILL.md, Versionen seien "über redmine.py nicht
abgedeckt", stimmt damit nicht mehr und ist ersetzt - durch zwei
Eigenheiten, die beim Anlegen des Projekts devops aufgefallen sind:
Redmine begrenzt News-Titel auf 60 Zeichen (sonst HTTP 422), und die
Priorität eines Elterntickets wird aus den Unteraufgaben abgeleitet,
überschreibt also einen von Hand gesetzten Wert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 08:49:55 +02:00

4.7 KiB

name, description, version
name description version
redmine Redmine-Projekte, -Tickets, -Versionen und -News lesen/anlegen/aktualisieren via REST-API. Use when the user mentions "Redmine", "Ticket", "Issue in Redmine", "Meilenstein/Milestone/Version", "Projektstand/News" or die Projekte "pg-wissen"/"devops". 0.2.0

Redmine (redmine.py)

Interagiert mit Redmine (https://redmine.inmedias.it) über die REST-API: Projekte, Tickets, Versionen und News auflisten, anzeigen, anlegen, aktualisieren und kommentieren - über die mitgelieferte, self-contained redmine.py. Namen werden auf IDs aufgelöst (Projekt, Tracker, Status, Priorität, Version).

Ausführen

redmine.py ist ein eigenständiges uv run --script (Inline-Deps: requests, python-dotenv). Aus dem Skill-Verzeichnis:

./redmine.py <befehl> ...

--json (vor dem Befehl) gibt jeweils die Rohdaten aus.

Kontext & Stammdaten

./redmine.py me                       # aktueller Benutzer (id, admin?, mail)
./redmine.py projects                 # sichtbare Projekte (id, identifier, name)
./redmine.py meta trackers            # Stammdaten: trackers | statuses | priorities

Tickets auflisten / anzeigen

./redmine.py issues --project pg-wissen                # offene Tickets (Default)
./redmine.py issues --project pg-wissen --status '*'   # alle (open|closed|*|Status-ID)
./redmine.py issues --assigned me --sort priority:desc
./redmine.py issues --query "Wiki" --limit 20          # Volltext im Betreff (~-Suche)
./redmine.py show 290 [--notes]                        # Ticket (optional mit Journalen)

Anlegen / Aktualisieren / Kommentieren

--project und --subject sind bei create Pflicht. Beschreibung inline (--description) oder aus Datei/stdin (--description-file -) übergeben - nicht als langes Shell-Argument (Sonderzeichen). Weitere Felder: --tracker, --status, --priority, --assigned me, --parent <id>, --version <name|id>, --done <0-100>.

./redmine.py create --project pg-wissen --subject "Titel" \
    --tracker Feature --description-file - < body.md
./redmine.py update 290 --status Erledigt --done 100 --notes "erledigt"
./redmine.py comment 290 "kurzer Kommentar"

Versionen (Meilensteine)

Versionen tragen die grobe Reihenfolge und speisen die Roadmap-Ansicht.

./redmine.py versions --project devops                        # auflisten
./redmine.py versions --project devops --name "Phase 1" \
    --due 2026-10-15 --description "Was in dieser Phase zu tun ist"
./redmine.py create --project devops --subject "Schritt" --version "Phase 1"
./redmine.py update 350 --version 23                          # ohne --project: ID

Ein Versionsname lässt sich nur mit --project auflösen, weil Versionen zu einem Projekt gehören. Bei update ist --project meist nicht angegeben - dort die Versions-ID verwenden.

Anlegen erfordert das Recht manage_versions.

News (Projektstand, Ankündigungen)

./redmine.py news --project devops                            # auflisten
./redmine.py news --project devops --title "Kurzer Titel" \
    --summary "Eine Zeile für die Übersicht" \
    --description-file text.md
./redmine.py news --id 1 --description-file korrigiert.md     # ändern

Zwei Eigenheiten der Redmine-API:

  • Der Titel darf höchstens 60 Zeichen haben, sonst HTTP 422. redmine.py prüft das vorab.
  • Die Antwort beim Anlegen enthält keine News-ID; der Befehl gibt deshalb die Projekt-URL aus statt eines toten Direktlinks. Ändern per --id geht trotzdem (PUT /news/{id}.json).

Format ist Markdown, wie bei Tickets.

Zugangsdaten

redmine.py bringt keinen Schlüssel mit. Jede/r hinterlegt einen eigenen API-Key als Umgebungsvariable oder in einer dotenv-Datei (Reihenfolge: ~/.config/dokumentierer/.env, dann Datei im Arbeitsverzeichnis, dann bereits gesetzte Env-Variablen). Siehe .env.example:

  • REDMINE_URL — Basis-URL (z.B. https://redmine.inmedias.it)
  • REDMINE_API_KEY — persönlicher API-Zugriffsschlüssel unter https://redmine.inmedias.it/my/account (rechts „API-Zugriffsschlüssel"). Fehlt der Schlüssel dort, ist der REST-Webservice noch nicht aktiviert (Administration → Konfiguration → API).

Hinweise

  • Schreibzugriff nur in Projekten mit „Add/Edit issues"-Recht; ein Nicht-Admin kann keine Tickets in fremden Projekten ändern.
  • Ticket-Beziehungen (blocks, relates, precedes) deckt redmine.py nicht ab - dafür POST /issues/<id>/relations.json. Ein Ticket kann nicht mit einem eigenen Unterticket verknüpft werden (HTTP 422).
  • Die Priorität eines Elterntickets leitet Redmine aus den Unteraufgaben ab; ein von Hand gesetzter Wert wird überschrieben. Abschaltbar unter Administration → Konfiguration → „Attribute übergeordneter Tickets".