with one click
radar
Radar - Collaudo siti con report ELI5 + dettagli tecnici
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Radar - Collaudo siti con report ELI5 + dettagli tecnici
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
GitHub — repos, issues, PRs, gists, Pages, branches via API
Gmail orchestrator — triage inbox, search, draft replies in-thread
Session closing (log, commit, push)
Mid-session checkpoint (log, database, commit, push) without closing
Brain package manager — install, update, list skills from registries
AI email auto-responder — monitors inbox, drafts context-aware replies, never sends without approval
| name | radar |
| description | Radar - Collaudo siti con report ELI5 + dettagli tecnici |
| user-invocable | true |
| argument-hint | [project|URL] [context] |
| requires | {"capabilities":["web_serving","playwright"]} |
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