Raycast Workflows für Webentwickler – Commands, Snippets & Automationen (2025)
Raycast ersetzt für mich den Großteil der Klick-Arbeit: Projekte öffnen, Builds starten, Skripte abfeuern, Git-Aktionen, Snippets. Hier sind die Workflows, die ich täglich nutze.

~9 Min. Lesezeit · Veröffentlicht am
🔧 Mein Setup kurz:
- Finder/VS Code/Open in iTerm Shortcuts
- Skripte:
goHomeAll,statusAll, Backup/Zip - GitHub: Issues/PRs/Clone via Raycast
Starter-Set: Essentials
- Extensions: Clipboard History, Window Management, GitHub, Script Commands
- Hotkeys: Globaler Raycast Shortcut + dedizierte für Build/Deploy
Eigene Commands
# ~/Scripts/open-project.sh
#!/usr/bin/env bash
code "$HOME/WorkSource/$1"
open -a iTerm "$HOME/WorkSource/$1"
In Raycast als „Script Command“ hinterlegen und mit Parametern (Projektname) aufrufen.
Snippets & Placeholders
// Snippet: Blog-Meta-Block (Raycast)
<meta name="description" content="{description}">
<meta property="og:image" content="/assets/img/blog/{slug}.jpg">
Git & Repos
Aktionen: Clone Repo, Open Pull Requests, Create Issue. Mit Organisation/Repo-Shortcuts sparst du Suchzeit.
Build & Deploy
# Script Command: build-current
#!/usr/bin/env bash
cd "$PWD" && node build.mjs --build
Optional: „Deploy to Server“ anstoßen (rsync/ssh), Log als Raycast-Toast ausgeben.
Tipps & Sicherheit
- SSH-Keys im macOS Schlüsselbund (ssh-agent) hinterlegen
- Skripte idempotent halten (mehrfaches Ausführen sicher)
- Snippets versionieren (dotfiles-Repo)
Praxis: 5 Script-Commands
Raycast Script Commands sind einfache Shell- oder Node-Skripte mit Metadaten im Header. Lege sie z. B. unter ~/Scripts/ ab und mache sie ausführbar (chmod +x). Hier sind fünf sofort nutzbare Beispiele.
1) Projekt öffnen (VS Code & iTerm)
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Open Project
# @raycast.mode silent
# @raycast.packageName Projects
# @raycast.argument1 {"type":"text","placeholder":"Projektname (Ordner in WorkSource)","optional":false}
# @raycast.icon 📂
code "$HOME/WorkSource/$1"
open -a iTerm "$HOME/WorkSource/$1" 2) Build im aktuellen Ordner
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Build current (node build.mjs)
# @raycast.mode compact
# @raycast.packageName Build
# @raycast.currentDirectoryPath true
# @raycast.icon 🛠️
node build.mjs --build && echo "Build OK" || echo "Build FAILED" 3) Blog-Only-Build
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Build Blog
# @raycast.mode compact
# @raycast.packageName Build
# @raycast.currentDirectoryPath true
# @raycast.icon 📑
node build.mjs --blog 4) Git Status All (übersicht)
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Git Status All
# @raycast.mode fullOutput
# @raycast.packageName Git
# @raycast.icon 📝
for d in "$HOME/WorkSource"/*; do
if [ -d "$d/.git" ]; then
echo "\n=== $(basename "$d") ==="
git -C "$d" status --short
fi
done 5) StartDay Backup
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title StartDay Backup
# @raycast.mode fullOutput
# @raycast.packageName Backup
# @raycast.icon 💾
DEST="$HOME/Library/Mobile Documents/com~apple~CloudDocs/Work/BackUpStartDay"
DATE=$(date +%Y-%m-%d)
for d in "$HOME/WorkSource"/*; do
name=$(basename "$d")
mkdir -p "$DEST/$name/$DATE"
rsync -a --delete "$d/src/" "$DEST/$name/$DATE/src/" 2>&1 || true
# Optional: Xcode-Projekte sichern
if [ -d "$d/xcode" ]; then
rsync -a --delete "$d/xcode/" "$DEST/$name/$DATE/xcode/" 2>&1 || true
fi
echo "Backup für $name abgeschlossen."
done Praxis: Project Switcher (Auswahlmenü)
Mit einem Auswahlmenü (fzf) wählst du Projekte schneller aus. fzf installierst du über Homebrew.
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Project Switcher
# @raycast.mode silent
# @raycast.packageName Projects
# @raycast.icon 🔀
PROJECT=$(ls -1 "$HOME/WorkSource" | fzf)
[ -z "$PROJECT" ] && exit 0
code "$HOME/WorkSource/$PROJECT"
open -a iTerm "$HOME/WorkSource/$PROJECT" Praxis: Repo Quick Actions
Häufige Git-Aktionen als Einzeiler – mit Safety‑Net (Abort bei uncommitted merges/rebases).
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Git Pull & Prune
# @raycast.mode compact
# @raycast.packageName Git
# @raycast.currentDirectoryPath true
# @raycast.icon 💎
if git rev-parse --git-dir > /dev/null 2>&1; then
if [ -d .git/rebase-merge ] || [ -d .git/rebase-apply ]; then
echo "Rebase aktiv – Aktion abgebrochen."; exit 1
fi
git fetch --prune && git pull --ff-only && echo "Aktualisiert."
else
echo "Kein Git-Repo"; exit 1
fi Praxis: Backup & Zip (Rotationsprinzip)
#!/usr/bin/env bash
# @raycast.schemaVersion 1
# @raycast.title Backup+Zip current
# @raycast.mode fullOutput
# @raycast.packageName Backup
# @raycast.currentDirectoryPath true
# @raycast.icon 📦
set -e
NAME=$(basename "$PWD")
DEST="$HOME/Library/Mobile Documents/com~apple~CloudDocs/Work/Backups/$NAME"
mkdir -p "$DEST/zips" "$DEST/history"
rsync -a --delete ./ "$DEST/history/$(date +%Y-%m-%d)/"
ZIPFILE="$DEST/zips/${NAME}-$(date +%Y-%m-%d-%H%M).zip"
/usr/bin/zip -rq "$ZIPFILE" .
# nur 5 ZIPs behalten
ls -1t "$DEST/zips" | tail -n +6 | while read f; do rm -f "$DEST/zips/$f"; done
printf "Fertig: %s\n" "$ZIPFILE" Praxis: Toast-Logs & Fehlerbehandlung
Nutze eine kleine Helper‑Funktion, um Status‑Meldungen in Raycast anzuzeigen (stdout genügt, bei compact Mode erscheinen Toasts).
#!/usr/bin/env bash
log(){ printf "%s | %s\n" "$(date +%H:%M:%S)" "$1"; }
log "Starte Build"
if node build.mjs --build; then
log "Build erfolgreich"
else
log "Build FEHLGESCHLAGEN"; exit 1
fi Troubleshooting
- "permission denied":
chmod +x ~/Scripts/*.shsetzen. - Pfadprobleme: In Raycast ggf. Current Directory aktivieren oder absolute Pfade nutzen.
- ssh fragt ständig nach Passphrase:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519und in~/.ssh/configUseKeychain yes. - fzf nicht gefunden:
brew install fzfund Shell neu starten.
Cheat‑Sheet
# @raycast.mode:silent(nur Toast),compact(kurz),fullOutput(Terminal‑ähnlich)# @raycast.currentDirectoryPath true: Skript im aktuellen Finder/VS‑Code‑Ordner ausführen# @raycast.argument{n}: Eingaben (Text, Auswahl) definieren# @raycast.icon: Emoji/Icon setzen, z. B. 🛠️, 💾, 📦