#!/usr/bin/env bash # Helmut installer — installs the Helmut skill for Claude Code and/or the Codex prompt. # # Usage: # curl -fsSL https://git.epod.dev/erhan/helmut/main/install.sh | bash # 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 set -euo pipefail # Defaults: install both. INSTALL_CLAUDE=1 INSTALL_CODEX=1 for arg in "$@"; do case "$arg" in --claude-only) INSTALL_CODEX=0 ;; --codex-only) INSTALL_CLAUDE=0 ;; -h|--help) cat <<'EOF' Helmut installer Options: --claude-only Install only the Claude Code skill --codex-only Install only the Codex prompt -h, --help Show this help Without flags, installs for both. EOF exit 0 ;; *) echo "Unknown argument: $arg" >&2 exit 1 ;; esac done # Source this repo. When piped via curl, default to the canonical raw URL. # Override with HELMUT_RAW_BASE for forks / mirrors. RAW_BASE="${HELMUT_RAW_BASE:-https://git.epod.dev/erhan/helmut/main}" fetch() { local url="$1" local dest="$2" mkdir -p "$(dirname "$dest")" if command -v curl >/dev/null 2>&1; then curl -fsSL "$url" -o "$dest" elif command -v wget >/dev/null 2>&1; then wget -q "$url" -O "$dest" else echo "Need curl or wget to install." >&2 exit 1 fi } if [[ "$INSTALL_CLAUDE" -eq 1 ]]; then CLAUDE_DIR="$HOME/.claude/skills/helmut" echo "Installing Claude Code skill -> $CLAUDE_DIR/SKILL.md" fetch "$RAW_BASE/SKILL.md" "$CLAUDE_DIR/SKILL.md" fi if [[ "$INSTALL_CODEX" -eq 1 ]]; then CODEX_DIR="$HOME/.codex/prompts" echo "Installing Codex prompt -> $CODEX_DIR/helmut.md" fetch "$RAW_BASE/codex/helmut.md" "$CODEX_DIR/helmut.md" fi cat <<'EOF' Done. Claude Code: restart your session once so the new skill is picked up, then address Helmut by name — "helmut?", "helmut take a look", etc. Codex: type /helmut in a session. Helmut does not say hello. EOF