npx claudepluginhub giobi/claude-skills --plugin radarThis skill uses the workspace's default tool permissions.
**Radar** — Collaudo siti con Playwright, report client-facing
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Builds 3-5 year financial models for startups with cohort revenue projections, cost structures, cash flow, headcount plans, burn rate, runway, and scenario analysis.
Radar — Collaudo siti con Playwright, report client-facing
Evoluzione di PlayRalph. Stesso motore diagnostico Playwright, ma il report finale e pensato per il cliente:
Radar e multi-tenant: ogni azienda ha il suo dominio e i suoi report separati.
Il tenant si decide SOLO dal frontmatter di wiki/projects/{nome}/index.md:
radar_tenant → se presente, usa quellocompany → se corrisponde a un tenant configurato, usa quelloMAI hardcodare liste di progetti per tenant. Fa fede solo il frontmatter.
| Tenant | URL | Report path | Git |
|---|---|---|---|
| giobi (default) | radar.giobi.com/{project}/{case}/ | /home/web/radar.giobi.com/ | GitHub Pages (repo giobi/radar) |
| netycom | radar.netycom.it/{project}/{case}/ | /home/web/radar.netycom.it/ | GitHub Pages (repo giobi/radar-netycom) |
Dashboard di ogni tenant: {url}/dashboard/
Entrambi i tenant sono su GitHub Pages:
cd {report_path} && git add -A && git commit -m "report: {project}/{case}" && git push| Emoji | Scenario | Cosa fa | Iterazioni |
|---|---|---|---|
| fix | Bug fix | Issue/bug → branch → fix → verify loop | max 5 |
| search | Bug verification | Screenshot e documentazione del bug, niente fix | 1-2 |
| check | Post-fix validation | Fix gia pushato, verifico che funzioni | 1-2 |
| rocket | Post-deploy check | Check generale post-deploy | 1-3 |
| fire | Crisis | Rotto ORA, trova e fixa | max 5 |
args = "$ARGUMENTS".strip()
# Detect project name vs URL
if args starts with "http":
target_url = first_word
project = resolve_from_domain(target_url)
else:
parts = args.split(maxsplit=1)
project_name = parts[0]
context = parts[1] if len(parts) > 1 else ""
# Carica wiki/projects/{project_name}/index.md
# Leggi frontmatter: domain_dev, server_dev, server_dev_path, repo, github_token_env
# Leggi sezione PlayRalph: test_user, test_password, auth_type, login_url, setup_notes
Il file wiki/projects/{nome}/index.md DEVE avere nel frontmatter:
server_dev: cloudways-athena.giobi.com
server_dev_path: /home/.../public_html
domain_dev: estendo.sel.re
repo: https://github.com/org/repo
github_token_env: NETYCOM_GITHUB
E una sezione PlayRalph nel body:
## PlayRalph
**Utente test permanente su {domain_dev}:**
- Email: test@netycom.com
- Password: xxx
- Setup notes: "Serve store ID 18 + Spatie role Admin"
Se mancano dati: chiedi a Giobi. Non improvvisare.
context_lower = context.lower()
if any(w in context_lower for w in ["non funziona", "rotto", "errore", "500", "bug", "fix", "broken"]):
scenario = "bugfix"
elif any(w in context_lower for w in ["verifica bug", "documenta", "screenshot del bug", "mostrami"]):
scenario = "verification"
elif any(w in context_lower for w in ["post-fix", "ho fixato", "ho pushato", "verifica fix", "funziona ora"]):
scenario = "postfix"
elif any(w in context_lower for w in ["deploy", "post-deploy", "dopo il deploy", "rilascio"]):
scenario = "postdeploy"
elif any(w in context_lower for w in ["down", "crash", "urgente", "crisis", "in palla", "esploso"]):
scenario = "crisis"
else:
scenario = None # → questionario
Identico a PlayRalph (vedi /playralph per i dettagli di ogni scenario).
Identico a PlayRalph (vedi /playralph Step 3 per il dettaglio completo delle strategy).
TL;DR dell'ordine di decisione:
1. Sezione Radar nel progetto con radar_auth_cmd? → usa quello
2. Credenziali esplicite (email/password)? → form login con Playwright
3. Server + path? → auto-detect tipo app:
- Laravel con artisan → radar:login o tinker magic link
- WordPress con wp-cli → password temporanea
- Altro → route temporanea o sessione DB
4. Niente accesso? → chiedi a Giobi
domcontentloaded (non networkidle)asyncio.sleep(3) dopo ogni navigazione per Livewire/SPA# Laravel
ssh {server_alias} "grep 'local.ERROR' {server_dev_path}/storage/logs/laravel-$(date +%Y-%m-%d).log | tail -5"
# WordPress
ssh {server_alias} "tail -20 {server_dev_path}/wp-content/debug.log"
/home/web/radar.giobi.com/{project}/{YYYY-MM-DD-slug}/
├── index.html ← Report HTML self-contained
├── screenshot-1.png
├── screenshot-2.png
└── ...
Il report DEVE avere:
Header: brand Radar, titolo progetto + caso, meta (data, target, scenario, iterazioni)
Score card: cerchio SVG con score 0-100 + frase riassuntiva ELI5
Cronologia intervento (timeline): sequenza temporale con orari, pallini colorati (rosso=problema, giallo=diagnosi, verde=risolto) e durata totale.
Tab "Cosa abbiamo fatto" (DEFAULT, visibile al cliente):
Tab "Dettagli tecnici":
Footer: Radar - giobi.com - data generazione
/home/web/radar.giobi.com/fasoli/2026-03-06-crisis-cartasi-xpay-fatal/index.htmlIl tab "Cosa abbiamo fatto" e per il cliente, non per il dev. Regole:
score = 100
deductions = {
"error_500": -30,
"error_404_on_key_page": -20,
"console_errors_js": -10,
"slow_load_over_5s": -10,
"visual_broken": -15,
"form_not_working": -20,
"mobile_broken": -15,
"ssl_issue": -25,
"minor_visual_glitch": -5,
}
cd /home/web/radar.giobi.com
git add -A
git commit -m "report: {project}/{YYYY-MM-DD-slug}"
git push
from discord_bot import notify
# START
report_url = f"https://radar.giobi.com/{project}/{slug}/"
notify('info', f"""Radar: {project}
Target: {url}
Scenario: {scenario}
Report: {report_url}
In corso...""", 'playralph')
# END
verdict_emoji = {"FIXED": "verde", "HEALTHY": "verde", "ISSUES": "giallo", "BROKEN": "rosso"}
notify('info', f"""Radar done: {project}
{verdict_emoji[verdict]} Score: {score}/100 — {verdict}
{report_url}
{summary}""", 'playralph')
Dopo ogni report, aggiorna due cose:
{tenant_path}/{project}/index.htmlLista dei report per quel progetto (piu recente in alto).
{tenant_path}/dashboard/index.htmlScansiona TUTTE le directory progetto in {tenant_path}/, per ognuna:
20*)Stile dashboard: IBM Plex Mono, palette stone, layout minimal.
IMPORTANTE: {tenant_path}/index.html e una 404 elegante — NON e la dashboard. La dashboard e SOLO su /dashboard/.
Se dopo 2 tentativi sullo stesso problema non si risolve:
Non riesco a risolvere in sessione.
Problemi aperti:
- [issue 1]: tentato X, Y — non risolto
Vuoi che monto un Radar in background? (max 20 iterazioni, notifica Discord)
~/.tmux/set-pane-title.sh "radar {project}"
/radar nexum il pagamento carta non funziona su /contract/1035/step/6
→ bugfix, login, diagnosa, fixa, report ELI5 su radar.giobi.com/nexum/
/radar nexum
→ questionario interattivo
/radar nexum verifica che il fix della tipologia step funzioni
→ postfix, screenshot, score, report
/radar https://estendo.sel.re controlla dopo il deploy
→ postdeploy, check generale, report
/radar nexum e tutto rotto
→ crisis, fix diretto, report
$ARGUMENTS