#!/bin/bash set -euo pipefail REPO="/mnt/projekte/claude-workflow" echo "=== Claude-Workflow Bootstrap ===" # Skills (als Verzeichnis-Symlinks: ~/.claude/skills/ → repo/skills//) mkdir -p ~/.claude/skills for d in "$REPO/skills/"/*/; do name=$(basename "$d") ln -sfn "$d" ~/.claude/skills/"$name" done echo "✓ Skills verlinkt" # Agents mkdir -p ~/.claude/agents for f in "$REPO/agents/"*.md; do ln -sf "$f" ~/.claude/agents/ done echo "✓ Agents verlinkt" # Dotfiles ln -sf "$REPO/dotfiles/CLAUDE.md" ~/.claude/CLAUDE.md ln -sf "$REPO/dotfiles/settings.json" ~/.claude/settings.json ln -sf "$REPO/dotfiles/statusline-command.sh" ~/.claude/statusline-command.sh ln -sf "$REPO/dotfiles/gitea-mcp-wrapper.sh" ~/.claude/gitea-mcp-wrapper.sh chmod +x "$REPO/dotfiles/gitea-mcp-wrapper.sh" echo "✓ Dotfiles verlinkt" # Hooks ausführbar machen chmod +x "$REPO/hooks/"*.sh echo "✓ Hooks ausführbar" echo "" echo "=== Voraussetzungen prüfen ===" # --- gh (GitHub CLI, wird auch für Gitea-PRs genutzt) --- if command -v gh &>/dev/null; then echo "✓ gh $(gh --version | head -1)" else echo " gh fehlt – installiere via apt..." sudo apt-get install -y gh echo "✓ gh installiert" fi # --- jq --- if command -v jq &>/dev/null; then echo "✓ jq $(jq --version)" else echo " jq fehlt – installiere via apt..." sudo apt-get install -y jq echo "✓ jq installiert" fi # --- ruff --- if command -v ruff &>/dev/null; then echo "✓ ruff $(ruff --version)" else echo " ruff fehlt – installiere via pipx..." if ! command -v pipx &>/dev/null; then sudo apt-get install -y pipx pipx ensurepath fi pipx install ruff echo "✓ ruff installiert" fi # --- shellcheck (Bash-Lint-Hook + /script) --- if command -v shellcheck &>/dev/null; then echo "✓ shellcheck $(shellcheck --version | awk '/^version:/ {print $2}')" else echo " shellcheck fehlt – installiere via apt..." sudo apt-get install -y shellcheck echo "✓ shellcheck installiert" fi # --- gitea-mcp Binary --- if [[ -x ~/go/bin/gitea-mcp ]]; then echo "✓ gitea-mcp vorhanden" else echo " gitea-mcp fehlt – installiere via go install..." go install gitea.com/gitea/gitea-mcp@latest echo "✓ gitea-mcp installiert" fi # --- context7 Plugin-Check --- if claude mcp list 2>/dev/null | grep -q "context7"; then echo "✓ context7 Plugin aktiv" else echo "⚠ context7 Plugin nicht aktiv – prüfe enabledPlugins in settings.json" echo " Ggf. Claude Code neu starten oder Plugin manuell aktivieren." fi # --- gitea-mcp in Claude Code registrieren --- if claude mcp list 2>/dev/null | grep -q "^gitea:"; then echo "✓ gitea MCP bereits registriert" else echo " Registriere gitea MCP..." claude mcp add --scope user gitea -- bash ~/.claude/gitea-mcp-wrapper.sh echo "✓ gitea MCP registriert" fi # --- secret-tool + Gitea-Token --- if ! command -v secret-tool &>/dev/null; then echo " secret-tool fehlt – installiere libsecret-tools..." sudo apt-get install -y libsecret-tools echo "✓ secret-tool installiert" else echo "✓ secret-tool vorhanden" fi echo " Gitea-Token prüfen..." if secret-tool lookup user claude-code token gitea &>/dev/null; then echo "✓ Gitea-Token vorhanden" else echo "" echo " Gitea-Token für claude-code nicht gefunden." read -r -p " Gitea-Token eingeben (https://gitea.troeger-net.org): " GITEA_TOKEN if [[ -n "${GITEA_TOKEN// /}" ]]; then echo -n "$GITEA_TOKEN" | secret-tool store \ --label="Gitea claude-code token" \ user claude-code token gitea echo "✓ Gitea-Token gespeichert" else echo "⚠ Kein Token eingegeben – übersprungen" fi fi echo "" echo "✓ Bootstrap abgeschlossen"