Ü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>
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.pyprü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
--idgeht 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) decktredmine.pynicht ab - dafürPOST /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".