Feat: Claude Code & Awesome LLM Skills zur Ersteinrichtung hinzufügen

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017WMUd2fGsPCtTCVQkSS5TA
This commit is contained in:
2026-09-06 21:02:49 +02:00
co-authored by Claude Sonnet 5
parent 8761e1c673
commit 2e470d676d
5 changed files with 108 additions and 6 deletions
@@ -1,5 +1,5 @@
[Unit] [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 # Systemweit installiert unter /etc/systemd/user/ und global aktiviert
# (siehe stages/10-hyprland.sh) - gilt fuer alle Benutzer, ohne dass etwas # (siehe stages/10-hyprland.sh) - gilt fuer alle Benutzer, ohne dass etwas
# in einzelne Home-Verzeichnisse kopiert werden muss. Bewusst NICHT an # in einzelne Home-Verzeichnisse kopiert werden muss. Bewusst NICHT an
@@ -2,10 +2,12 @@
# ============================================================================== # ==============================================================================
# /usr/local/lib/first-login-setup/first-login-setup.sh # /usr/local/lib/first-login-setup/first-login-setup.sh
# Ersteinrichtung nach der ersten Anmeldung. Führt der Reihe nach aus: # Ersteinrichtung nach der ersten Anmeldung. Führt der Reihe nach aus:
# 1) setup-dotfiles.sh - Desktop-Konfiguration (LinuxBeginnings / eigenes Repo) # 1) setup-dotfiles.sh - Desktop-Konfiguration (LinuxBeginnings / eigenes Repo)
# 2) setup-shell.sh - Oh-My-Zsh & Plugins # 2) setup-shell.sh - Oh-My-Zsh & Plugins
# 3) setup-junie-cli.sh - JetBrains Junie CLI # 3) setup-junie-cli.sh - JetBrains Junie CLI
# 4) setup-junie-skills.sh- AwesomeJunieSkills # 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 # Wird automatisch beim Login über den systemweiten systemd --user Service
# 'first-login-setup.service' (/etc/systemd/user/) gestartet - bewusst NICHT # '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" " 2) Oh-My-Zsh & Shell-Plugins"
printf "%b\n" " 3) JetBrains Junie CLI" printf "%b\n" " 3) JetBrains Junie CLI"
printf "%b\n" " 4) AwesomeJunieSkills" printf "%b\n" " 4) AwesomeJunieSkills"
printf "%b\n" " 5) Claude Code"
printf "%b\n" " 6) Awesome LLM Skills"
printf "\n" printf "\n"
printf "%b\n" "${CLR_BOLD}${CLR_CYAN}------------------------------------------------------------------------------${CLR_RESET}" 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-shell.sh"
bash "$SCRIPT_DIR/setup-junie-cli.sh" bash "$SCRIPT_DIR/setup-junie-cli.sh"
bash "$SCRIPT_DIR/setup-junie-skills.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 mark_as_prompted
@@ -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
@@ -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
+1 -1
View File
@@ -89,7 +89,7 @@ chown -R "$TARGET_USER:$TARGET_USER" "$TARGET_HOME/.config/hypr"
log_success "Rudimentary Hyprland configuration deployed:" log_success "Rudimentary Hyprland configuration deployed:"
log_info " - SUPER+ENTER: Kitty Terminal" log_info " - SUPER+ENTER: Kitty Terminal"
log_info " - SUPER+Q: Close Active Window" 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 " 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 " '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." log_info " hyprland.conf). Läuft nur beim ersten Login bzw. nach 'Später' erneut."