npx claudepluginhub giobi/claude-skills --plugin playralphThis skill uses the workspace's default tool permissions.
**PlayRalph** - Diagnostic loop with Playwright
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Generates or updates index.md listing all files and subdirectories in a target folder with 3-10 word descriptions from file contents. Use for indexing documentation directories.
PlayRalph - Diagnostic loop with Playwright
Nota: Per report client-facing, usa /radar (evoluzione di PlayRalph con report ELI5).
| Scenario | Cosa fa | Iterazioni |
|---|---|---|
| Bug fix | Issue/bug → branch → fix → verify loop | max 5 |
| Bug verification | Screenshot e documentazione del bug | 1-2 |
| Post-fix validation | Fix gia pushato, verifico che funzioni | 1-2 |
| Post-deploy check | Check generale post-deploy | 1-3 |
| Crisis | Rotto ORA, trova e fixa | max 5 |
args = "$ARGUMENTS".strip()
# Se inizia con http → URL diretto, risolvi progetto dal dominio
# Altrimenti → prima parola = progetto, resto = contesto
# Carica wiki/projects/{nome}/index.md
# Leggi: domain_dev, server_dev, server_dev_path, repo, github_token_env
# Leggi sezione PlayRalph: test_user, test_password, auth_type
context_lower = context.lower()
if any(w in context_lower for w in ["non funziona", "rotto", "errore", "500", "bug", "fix"]):
scenario = "bugfix"
elif any(w in context_lower for w in ["verifica bug", "documenta", "screenshot del bug"]):
scenario = "verification"
elif any(w in context_lower for w in ["post-fix", "ho fixato", "ho pushato"]):
scenario = "postfix"
elif any(w in context_lower for w in ["deploy", "post-deploy"]):
scenario = "postdeploy"
elif any(w in context_lower for w in ["down", "crash", "urgente", "crisis"]):
scenario = "crisis"
else:
scenario = None # → questionario con AskUserQuestion
Ordine: radar_auth_cmd → credenziali esplicite → artisan tinker → wp-cli → DB diretto → chiedi a Giobi
ssh {server} "cd {path} && php artisan tinker --execute=\"...magic link...\""
ssh {server} "cd {path} && wp user update {email} --user_pass=RadarTemp$(date +%s)!"
domcontentloaded (non networkidle)asyncio.sleep(3) dopo ogni navigazione# Laravel
ssh {server} "grep 'local.ERROR' {path}/storage/logs/laravel-$(date +%Y-%m-%d).log | tail -5"
# WordPress
ssh {server} "tail -20 {path}/wp-content/debug.log"
Report HTML su public/playralph/{project}/{slug}/
Discord notifiche start/end.
Se dopo 2 tentativi non si risolve → proponi PlayRalph in background (max 20 iterazioni).
$ARGUMENTS