Helmut
Verdict: schlecht
A grumpy senior ABAP reviewer for Claude Code and Codex. Reviews your ABAP, tells you what is wrong, and never suggests fixes. "ok" is the ceiling and it is rare.
Helmut has been in Walldorf since the R/2-to-R/3 migration. He has seen FORM routines outlive empires, OO Push promised twice, and roughly 4,000 customer Z-reports that should never have been written. None of it impresses him.
This is a port of Marko to ABAP. Same shape, ABAP brain.
What he does
Address Helmut by name in Claude Code, or type /helmut in Codex. He looks at the active editor tab, an attached file, or code pasted into the conversation, and returns this:
That is a real review of a real customer class. Helmut found a copy-paste bug nobody had noticed in years.
Verdict scale
katastrophe— shipping this is dangerous. Production-down material.schlecht— the default state of most custom ABAP. Real problems a reviewer must block on.mittelmäßig— works. Unloved. Survivable, but Helmut is tired.ok— rarest outcome. Helmut would sign the transport.
If your code lands an "ok" you can frame the screenshot.
What he focuses on
In order:
- Performance —
SELECTinLOOP, missingWHEREon key fields,SELECT *,FOR ALL ENTRIEStraps, CDS push-down failures,READ TABLEonSTANDARD TABLEin hot paths. - Clean ABAP / ABAP OO — god methods, swallowed exceptions, bad names, procedural classes,
MOVE-CORRESPONDINGbetween unrelated structures, dead code, hardcoded values, lying variable names.
He does not care about formatting, indentation, casing, or Z vs Y. Pretty Printer exists.
Install
One command, installs for both tools:
curl -fsSL https://git.epod.dev/erhan/helmut/main/install.sh | bash
Flags:
# Just one tool
curl -fsSL https://git.epod.dev/erhan/helmut/main/install.sh | bash -s -- --claude-only
curl -fsSL https://git.epod.dev/erhan/helmut/main/install.sh | bash -s -- --codex-only
Or manually:
- Claude Code: copy
SKILL.mdto~/.claude/skills/helmut/SKILL.md - Codex: copy
codex/helmut.mdto~/.codex/prompts/helmut.md
Use
Claude Code
Address him by name. Natural language triggers the skill:
helmut?helmut, schau malwas meinst du, helmut?hey helmut, take a look at this classhelmut thoughts on this CDS view?
He picks what to review in this order: active editor tab / attached file → code pasted into the conversation → a file you point him at → asks you.
You will need to restart your Claude Code session once after install so the new skill is picked up.
Codex
Type /helmut in a session. Same behavior, different entry point — Codex doesn't have skill auto-triggering, so it's an explicit slash command.
Periodic reviews
Want Helmut watching while you work? In Claude Code:
/loop 10m helmut?
Or wire a Stop hook in ~/.claude/settings.json so he chimes in after every turn.
Why this works
- No praise inflation. "ok" means the code is actually good. A verdict is only information if it distinguishes good from bad.
- No suggested fixes. Forces each complaint to stand on its own. Vague critique gets exposed when you can't hide it behind a proposed solution. Also keeps the output short.
OBJECT_NAME:LINEanchors on every gripe. ABAP-shaped, not file-shaped. The output is designed to be consumed by an agent that can jump straight to the offending statement.- Performance first. Most production-grade ABAP problems are performance problems. Helmut leads with them.
- No caricature. The "grumpy Walldorf senior" persona exists to strip out flattery and verbosity. No fake accent, no Oktoberfest jokes, no theatre. Just a tired engineer who has had this conversation too many times.
The point is signal-to-noise. A review that ends "looks fine, ship it" contains no information. Helmut's does.
How it works
Helmut is a prompt, not a tool. The repo contains two files:
SKILL.md— the Claude Code skill. Markdown with YAML frontmatter that Claude Code loads at session start. Thedescriptionfield is what Claude consults to decide when to invoke the skill, which is why Helmut triggers on being addressed by name.codex/helmut.md— the Codex custom prompt. Plain markdown injected into the conversation when you type/helmut.
Same instructions in both, with minor framing differences (third-person "Helmut does X" vs. second-person "you do X") so each tool's invocation model reads naturally.
Credit
Forked from julianmemberstack/marko. Marko reviews general code; Helmut reviews ABAP. Same principles, different specialist. Thanks to Julian for the original design — the "no praise, no fixes, anchored gripes" shape is his.
Uninstall
rm -rf ~/.claude/skills/helmut ~/.codex/prompts/helmut.md
License
MIT. See LICENSE.