From 2e470d676dbc94370ac718d34f5976617f348262 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 6 Sep 2026 21:02:49 +0200 Subject: [PATCH] =?UTF-8?q?Feat:=20Claude=20Code=20&=20Awesome=20LLM=20Ski?= =?UTF-8?q?lls=20zur=20Ersteinrichtung=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ergänzt die bestehende Ersteinrichtung (Dotfiles, Oh-My-Zsh, JetBrains Junie) um zwei weitere Schritte, analog zum bereits vorhandenen Junie-Muster: - setup-claude-cli.sh installiert Claude Code über den offiziellen nativen Installer (curl -fsSL https://claude.ai/install.sh | bash). - setup-claude-skills.sh klont/aktualisiert Awesome LLM Skills (https://github.com/Prat011/awesome-llm-skills) nach ~/.claude/skills/awesome-llm-skills und verlinkt alle Unterordner mit SKILL.md direkt nach ~/.claude/skills, damit Claude Code sie erkennt. first-login-setup.sh ruft beide Schritte zusätzlich auf; Beschreibungen im systemd-Service und in stages/10-hyprland.sh entsprechend erweitert. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_017WMUd2fGsPCtTCVQkSS5TA --- .../systemd/user/first-login-setup.service | 2 +- .../first-login-setup/first-login-setup.sh | 14 ++-- .../lib/first-login-setup/setup-claude-cli.sh | 32 ++++++++++ .../first-login-setup/setup-claude-skills.sh | 64 +++++++++++++++++++ stages/10-hyprland.sh | 2 +- 5 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 data/usr/local/lib/first-login-setup/setup-claude-cli.sh create mode 100644 data/usr/local/lib/first-login-setup/setup-claude-skills.sh diff --git a/data/etc/systemd/user/first-login-setup.service b/data/etc/systemd/user/first-login-setup.service index bb88e8f..687a990 100644 --- a/data/etc/systemd/user/first-login-setup.service +++ b/data/etc/systemd/user/first-login-setup.service @@ -1,5 +1,5 @@ [Unit] -Description=Ersteinrichtung: Dotfiles, Oh-My-Zsh, JetBrains Junie CLI & AwesomeJunieSkills +Description=Ersteinrichtung: Dotfiles, Oh-My-Zsh, JetBrains Junie, Claude Code & Skills # Systemweit installiert unter /etc/systemd/user/ und global aktiviert # (siehe stages/10-hyprland.sh) - gilt fuer alle Benutzer, ohne dass etwas # in einzelne Home-Verzeichnisse kopiert werden muss. Bewusst NICHT an diff --git a/data/usr/local/lib/first-login-setup/first-login-setup.sh b/data/usr/local/lib/first-login-setup/first-login-setup.sh index 92081e6..98a361a 100755 --- a/data/usr/local/lib/first-login-setup/first-login-setup.sh +++ b/data/usr/local/lib/first-login-setup/first-login-setup.sh @@ -2,10 +2,12 @@ # ============================================================================== # /usr/local/lib/first-login-setup/first-login-setup.sh # Ersteinrichtung nach der ersten Anmeldung. Führt der Reihe nach aus: -# 1) setup-dotfiles.sh - Desktop-Konfiguration (LinuxBeginnings / eigenes Repo) -# 2) setup-shell.sh - Oh-My-Zsh & Plugins -# 3) setup-junie-cli.sh - JetBrains Junie CLI -# 4) setup-junie-skills.sh- AwesomeJunieSkills +# 1) setup-dotfiles.sh - Desktop-Konfiguration (LinuxBeginnings / eigenes Repo) +# 2) setup-shell.sh - Oh-My-Zsh & Plugins +# 3) setup-junie-cli.sh - JetBrains Junie CLI +# 4) setup-junie-skills.sh - AwesomeJunieSkills +# 5) setup-claude-cli.sh - Claude Code (Anthropic) +# 6) setup-claude-skills.sh - Awesome LLM Skills # # Wird automatisch beim Login über den systemweiten systemd --user Service # 'first-login-setup.service' (/etc/systemd/user/) gestartet - bewusst NICHT @@ -96,6 +98,8 @@ printf "%b\n" " 1) Desktop-Konfiguration (Dotfiles)" printf "%b\n" " 2) Oh-My-Zsh & Shell-Plugins" printf "%b\n" " 3) JetBrains Junie CLI" printf "%b\n" " 4) AwesomeJunieSkills" +printf "%b\n" " 5) Claude Code" +printf "%b\n" " 6) Awesome LLM Skills" printf "\n" printf "%b\n" "${CLR_BOLD}${CLR_CYAN}------------------------------------------------------------------------------${CLR_RESET}" @@ -117,6 +121,8 @@ bash "$SCRIPT_DIR/setup-dotfiles.sh" bash "$SCRIPT_DIR/setup-shell.sh" bash "$SCRIPT_DIR/setup-junie-cli.sh" bash "$SCRIPT_DIR/setup-junie-skills.sh" +bash "$SCRIPT_DIR/setup-claude-cli.sh" +bash "$SCRIPT_DIR/setup-claude-skills.sh" mark_as_prompted diff --git a/data/usr/local/lib/first-login-setup/setup-claude-cli.sh b/data/usr/local/lib/first-login-setup/setup-claude-cli.sh new file mode 100644 index 0000000..5b0a74d --- /dev/null +++ b/data/usr/local/lib/first-login-setup/setup-claude-cli.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# ============================================================================== +# /usr/local/lib/first-login-setup/setup-claude-cli.sh +# Installiert Claude Code (Anthropic) über den offiziellen nativen Installer. +# +# Kann eigenständig ausgeführt werden, unabhängig von first-login-setup.sh. +# ============================================================================== + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=_lib.sh +source "$SCRIPT_DIR/_lib.sh" + +install_claude_cli() { + print_header " Claude Code Installation " + + if command -v curl >/dev/null 2>&1; then + if curl -fsSL https://claude.ai/install.sh | bash; then + print_success "Claude Code erfolgreich installiert." + else + print_warn "Installation von Claude Code fehlgeschlagen oder unterbrochen." + fi + else + print_error "'curl' ist nicht installiert. Claude Code konnte nicht geladen werden." + fi +} + +# Nur ausführen, wenn das Skript direkt gestartet wird (nicht bei source) +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + install_claude_cli +fi diff --git a/data/usr/local/lib/first-login-setup/setup-claude-skills.sh b/data/usr/local/lib/first-login-setup/setup-claude-skills.sh new file mode 100644 index 0000000..0c93f59 --- /dev/null +++ b/data/usr/local/lib/first-login-setup/setup-claude-skills.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +# ============================================================================== +# /usr/local/lib/first-login-setup/setup-claude-skills.sh +# Klont/aktualisiert Awesome LLM Skills (https://github.com/Prat011/awesome-llm-skills) +# in ~/.claude/skills und verknüpft alle gefundenen Skills, damit Claude Code +# sie automatisch erkennt. +# +# Kann eigenständig ausgeführt werden, unabhängig von first-login-setup.sh. +# ============================================================================== + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck source=_lib.sh +source "$SCRIPT_DIR/_lib.sh" + +install_claude_skills() { + print_header " Awesome LLM Skills Installation " + + local skills_dir="$HOME/.claude/skills" + local repo_dir="$skills_dir/awesome-llm-skills" + mkdir -p "$skills_dir" + + if ! command -v git >/dev/null 2>&1; then + print_error "'git' ist nicht installiert. Awesome LLM Skills konnte nicht eingerichtet werden." + return 1 + fi + + if [[ -d "$repo_dir/.git" ]]; then + print_info "Repository existiert bereits in $repo_dir. Führe 'git pull' aus..." + if git -C "$repo_dir" pull --ff-only 2>/dev/null; then + print_success "Awesome LLM Skills erfolgreich aktualisiert." + else + print_warn "'git pull' in $repo_dir fehlgeschlagen." + fi + else + print_info "Klone Awesome LLM Skills nach $repo_dir..." + rm -rf "$repo_dir" 2>/dev/null || true + if git clone https://github.com/Prat011/awesome-llm-skills.git "$repo_dir"; then + print_success "Awesome LLM Skills erfolgreich nach $repo_dir geklont." + else + print_warn "Klonen von Awesome LLM Skills fehlgeschlagen." + fi + fi + + # Symlinks für alle Skills im Skill-Hauptordner erstellen + if [[ -d "$repo_dir" ]]; then + local count=0 + for skill_path in "$repo_dir"/*; do + if [[ -d "$skill_path" && -f "$skill_path/SKILL.md" ]]; then + local s_name + s_name="$(basename "$skill_path")" + ln -sfn "$skill_path" "$skills_dir/$s_name" + ((count++)) || true + fi + done + print_success "$count Skills verknüpft in '$skills_dir' (kann via 'git pull' in '$repo_dir' aktualisiert werden)." + fi +} + +# Nur ausführen, wenn das Skript direkt gestartet wird (nicht bei source) +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + install_claude_skills +fi diff --git a/stages/10-hyprland.sh b/stages/10-hyprland.sh index 7f5bf07..01f7ee5 100755 --- a/stages/10-hyprland.sh +++ b/stages/10-hyprland.sh @@ -89,7 +89,7 @@ chown -R "$TARGET_USER:$TARGET_USER" "$TARGET_HOME/.config/hypr" log_success "Rudimentary Hyprland configuration deployed:" log_info " - SUPER+ENTER: Kitty Terminal" log_info " - SUPER+Q: Close Active Window" -log_info " - Ersteinrichtung (Dotfiles, Oh-My-Zsh, Junie CLI & Skills) startet automatisch beim" +log_info " - Ersteinrichtung (Dotfiles, Oh-My-Zsh, JetBrains Junie, Claude Code & Skills) startet automatisch beim" log_info " nächsten Login jedes Benutzers über den systemweiten systemd --user Service" log_info " 'first-login-setup.service' (unabhängig vom gewählten Compositor, NICHT über" log_info " hyprland.conf). Läuft nur beim ersten Login bzw. nach 'Später' erneut."