Reviewt geänderten Rails-Code dieser App (kursverwaltung) gegen die verbindlichen Projekt-Konventionen aus CLAUDE.md: vanilla Rails / 37signals (keine Service-Objekte/Abstraktions-Gems), STATUSES/ROLES-Konstanten-Muster statt enum, params.expect statt require.permit (role nie massenzuweisbar), deutsche UI-Texte mit englischen Code-Bezeichnern, Minitest + Fixtures. Unbedingt nutzen, sobald jemand nach einem Konventions-Review, Style-Check, Self-Review oder PR-Review für Rails-Änderungen fragt — auch formuliert als "passt das zu unseren Konventionen?", "review meinen Code", "check vor dem Commit/Push", "ist das vanilla Rails?", oder vor einem Commit/PR. Greift auf geänderte/ungestagte Dateien (Diff) ebenso wie auf konkret genannte Dateien.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kursverwaltung-skills:krThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Prüft Rails-Änderungen gegen die in `CLAUDE.md` festgelegten Projekt-Konventionen
Prüft Rails-Änderungen gegen die in CLAUDE.md festgelegten Projekt-Konventionen
und gibt eine knappe, nach Schweregrad sortierte Befund-Liste mit Datei:Zeile aus.
Das Ziel ist ein schneller Self-Review vor Commit/PR — kein Fließtext-Gutachten. Die Konvention ist das Maß, nicht persönlicher Geschmack: melde nur, was wirklich gegen eine dokumentierte Regel verstößt oder sie gefährdet.
Umfang bestimmen. Standard ist der Diff der noch nicht committeten Änderungen:
git diff --name-only HEAD # geänderte Dateien
git diff HEAD -- <datei> # konkrete Änderungen mit Zeilen
Nennt der User konkrete Dateien/einen Branch/Commit-Range, prüfe genau die.
Nur geänderte Zeilen bewerten — bestehender Code drumherum ist nicht Gegenstand
des Reviews (außer eine Änderung verschärft dort ein Problem). Zeilennummern aus dem
aktuellen Dateistand nehmen, damit Datei:Zeile anklickbar stimmt.
Gegen die Checkliste prüfen (siehe unten). Bei Unsicherheit, ob ein Muster
etabliert ist, kurz im Code gegenprüfen (rg nach Vergleichsstellen), statt zu raten.
Knapp ausgeben im Report-Format unten.
Jede Regel hat einen Default-Schweregrad. muss = klarer Konventionsbruch;
sollte = Abweichung, die man fast immer beheben will; optional = Hinweis/Geschmack.
Schweregrad im Einzelfall hochstufen, wenn der Verstoß echten Schaden anrichtet
(z. B. role massenzuweisbar = Sicherheitsproblem → muss).
app/services/, app/forms/, app/lib/-Logikklassen.inclusion-Validierung, nie enum:
STATUSES = %w[draft active done].freeze
validates :status, inclusion: { in: STATUSES }
enum in Modellen → muss-Befund.params.expect(...) verwenden, nicht params.require(...).permit(...).role (User) niemals in den permittten Params — nicht massenzuweisbar. Falls doch → muss (Security).notice/alert, Button-/Label-Texte, Validierungs-Messages
in Views und Controllern. Englische User-facing-Strings → sollte.def anmelden, kurs_liste) → muss (bricht die Code-Sprache des Projekts).test/fixtures/*.yml).
RSpec (describe/it/expect(...)) oder FactoryBot (create(:...), build(:...)) → muss.*_cents (Helper price_display), keine Floats für Beträge.destroy_all vorab, Kinder vor Eltern) — bei Änderungen an db/seeds.rb.doc/design/ui-style-guide.md: violet-Akzent, runde Karten, Pill-Badges, kein Blau.Diese sind absichtliche Demo-Schwachstellen — niemals als Befund ausgeben:
GET /courses/:id/participants in CoursesController#participants (Security-Demo).Immer genau diese Struktur, kurz halten. Befunde nach Schweregrad gruppiert
(muss → sollte → optional), innerhalb der Gruppe nach Datei. Pro Befund eine Zeile:
Datei:Zeile + Regel-Kurzname + was zu tun ist.
## Konventions-Review — <N> Befunde (X muss · Y sollte · Z optional)
### muss
- `app/models/order.rb:14` — enum statt STATUSES: `enum status:` → `STATUSES`-Konstante + `inclusion`.
- `app/controllers/registrations_controller.rb:22` — params.require/permit + `role` leakt: auf `params.expect(user: [...])` ohne `:role` umstellen.
### sollte
- `app/controllers/carts_controller.rb:8` — englischer Flash-Text "Added to cart": auf deutsch ("In den Warenkorb gelegt").
### optional
- `app/models/course.rb:30` — Logik im Controller wäre hier knapper als Modell-Methode (Geschmack).
Keine Befunde zu: <falls relevant: bewusste Demo-Schwachstellen übersprungen>.
Wenn alles sauber ist:
## Konventions-Review — keine Befunde ✅
<M> geänderte Dateien gegen die Konventionen geprüft, nichts zu beanstanden.
Halte dich kurz: keine Einleitung, keine Wiederholung des Codes, keine Lob-Absätze. Jede Befund-Zeile muss ohne weiteren Kontext umsetzbar sein.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub henningthies/kursverwaltung-marketplace --plugin kursverwaltung-skills