Abbiamo aggiunto un banner intelligente nella dashboard che suggerisce automaticamente il prompt da copiare in Claude Code per sincronizzare agenti e MCP tools.
Il banner cambia aspetto in base allo stato di sincronizzazione:
┌─────────────────────────────────────────────────┐
│ ⚠️ Sincronizza Orchestro con Claude Code │
│ │
│ Per abilitare AI suggestions, sincronizza i │
│ tuoi agenti e MCP tools con Claude Code. │
│ │
│ [📋 Copia Prompt per Claude Code] │
│ │
│ "Usa mcp-orchestro per fare setup completo..." │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ ✅ Sincronizzazione Attiva │
│ │
│ 5 agenti e 6 MCP tools sincronizzati │
│ Ultimo sync: 04/10/2025, 16:30 │
│ │
│ [📋 Copia Prompt per Claude Code] │
│ [🔄 Risincronizza agenti e tools] │
│ │
│ ● 5 Agenti ● 6 MCP Tools ● Sincronizzato │
└─────────────────────────────────────────────────┘
L'utente vede il banner in alto nella dashboard:
// app/dashboard/page.tsx
<ClaudeCodeSyncBanner
projectId={data.projectId}
lastSyncDate={data.lastSyncDate}
agentCount={data.agentCount}
toolCount={data.toolCount}
/>Quando l'utente clicca il pulsante, viene copiato questo prompt:
Versione Quick (Default):
Usa mcp-orchestro per fare setup completo: sync agenti da .claude/agents/,
inizializza config progetto (projectId: 7b189723-6695-4f56-80bd-ef242f293402),
e mostrami il risultato finale con numero di agenti e tools configurati.
Versione Dettagliata (Click "Mostra prompt dettagliato"):
Esegui il setup completo di mcp-orchestro:
1. Sync agenti Claude Code:
mcp__orchestro__sync_claude_code_agents con projectId: 7b189723-6695-4f56-80bd-ef242f293402
2. Inizializza configurazione:
mcp__orchestro__initialize_project_configuration con projectId: 7b189723-6695-4f56-80bd-ef242f293402
3. Verifica sincronizzazione:
mcp__orchestro__get_project_configuration con projectId: 7b189723-6695-4f56-80bd-ef242f293402
Mostrami un riepilogo dei risultati.
- L'utente apre Claude Code nel suo editor
- Incolla il prompt copiato
- Preme Invio
- Claude Code esegue automaticamente:
- Sync degli agenti da
.claude/agents/ - Inizializzazione MCP tools
- Verifica configurazione
- Sync degli agenti da
Dopo il sync, l'utente ricarica la dashboard e vede:
✅ Sincronizzazione Attiva
5 agenti e 6 MCP tools sincronizzati
● 5 Agenti ● 6 MCP Tools ● Sincronizzato
Path: web-dashboard/components/ClaudeCodeSyncBanner.tsx
Props:
interface ClaudeCodeSyncBannerProps {
projectId: string; // ID progetto
lastSyncDate?: string; // Data ultimo sync
agentCount?: number; // Numero agenti sincronizzati
toolCount?: number; // Numero MCP tools
}Features:
- ✅ Rilevamento automatico stato sync
- ✅ Copy to clipboard con feedback visuale
- ✅ Prompt quick (1 comando)
- ✅ Prompt dettagliato (3 step)
- ✅ Istruzioni passo-passo
- ✅ Pulsante risincronizza
- ✅ Status indicators
Path: web-dashboard/app/dashboard/page.tsx
Features:
- ✅ Integrazione banner in alto
- ✅ Stats cards (tasks, agenti, tools, completed)
- ✅ Recent tasks con agent suggestions
- ✅ Auto-refresh dello stato
Path: web-dashboard/app/api/sync-status/route.ts
Endpoint: GET /api/sync-status?projectId=xxx
Response:
{
"synced": true,
"agentCount": 5,
"toolCount": 6,
"lastSyncDate": "2025-10-04T14:30:00Z",
"agents": [
{"name": "database-guardian", "type": "database-guardian", "enabled": true},
...
],
"tools": [
{"name": "supabase", "type": "supabase", "enabled": true},
...
]
}| Stato | Background | Border | Text | Icon |
|---|---|---|---|---|
| Not Synced | bg-amber-50 |
border-amber-200 |
text-amber-800 |
text-amber-600 |
| Synced | bg-green-50 |
border-green-200 |
text-green-800 |
text-green-600 |
⚠️ Not Synced:<AlertCircle />- ✅ Synced:
<Check /> - 📋 Copy:
<Copy /> - 🔄 Refresh:
<RefreshCw /> - ⚡ Quick:
<Zap />
- Padding interno:
p-4 - Margine bottom:
mb-6 - Gap tra elementi:
gap-4
cd web-dashboard
npm install lucide-react// app/dashboard/page.tsx
import ClaudeCodeSyncBanner from '@/components/ClaudeCodeSyncBanner';
export default function DashboardPage() {
// ... fetch data
return (
<div>
<ClaudeCodeSyncBanner
projectId={data.projectId}
lastSyncDate={data.lastSyncDate}
agentCount={data.agentCount}
toolCount={data.toolCount}
/>
{/* resto della dashboard */}
</div>
);
}Il file app/api/sync-status/route.ts gestisce il fetch dello stato.
npm run dev
# Apri http://localhost:3000/dashboardIl banner è completamente responsive:
- Layout orizzontale
- Prompt visibile inline
- Dettagli espandibili
- Layout orizzontale compatto
- Prompt troncato con "..."
- Layout verticale
- Stack degli elementi
- Pulsanti full-width
useEffect(() => {
const interval = setInterval(() => {
fetchSyncStatus();
}, 30000); // Ogni 30 secondi
return () => clearInterval(interval);
}, []);useEffect(() => {
const ws = new WebSocket('ws://localhost:3000/sync-status');
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
setSyncStatus(data);
};
return () => ws.close();
}, []);Pulsante "Ricarica" che l'utente può cliccare dopo il sync in Claude Code.
1. Utente apre Dashboard
↓
2. Vede banner "Non Sincronizzato"
↓
3. Click "Copia Prompt per Claude Code"
↓
4. Prompt copiato in clipboard
↓
5. Apre Claude Code
↓
6. Incolla prompt
↓
7. Claude Code esegue sync (5-10 secondi)
↓
8. Ritorna alla Dashboard
↓
9. (Opzionale) Click "Refresh" o auto-refresh
↓
10. Banner cambia a "Sincronizzato ✅"
↓
11. Stats aggiornate (5 agenti, 6 tools)
↓
12. Task con agent suggestions visibili
- Banner appare correttamente non sincronizzato
- Copy to clipboard funziona
- Feedback visuale "Copiato!" appare
- Prompt quick è corretto
- Prompt dettagliato è espandibile
- Istruzioni sono chiare
- Banner cambia a sincronizzato dopo sync
- Stats aggiornate correttamente
- API
/api/sync-statusritorna dati corretti - Dashboard fetch funziona
- Auto-refresh aggiorna stato
- Pulsante risincronizza funziona
- Flow completo utente → Claude Code → Dashboard
- Sync agenti funziona
- Init tools funziona
- Tasks mostrano agent suggestions
Per cambiare il prompt suggerito:
// ClaudeCodeSyncBanner.tsx
const quickPrompt = `
IL TUO PROMPT PERSONALIZZATO QUI
projectId: ${projectId}
`;// Durante init
const defaultTools = [
...existingTools,
{
name: 'custom-tool',
tool_type: 'custom',
command: 'npx custom-tool',
when_to_use: ['keyword1', 'keyword2'],
}
];// Modifica colori
const needsSync
? 'border-blue-200 bg-blue-50' // Invece di amber
: 'border-green-200 bg-green-50'Causa: Componente non importato
Fix:
import ClaudeCodeSyncBanner from '@/components/ClaudeCodeSyncBanner';Causa: HTTPS richiesto per clipboard API
Fix: Usa localhost o HTTPS in production
Causa: API non ritorna dati
Fix: Verifica che migration 012 sia applicata
Causa: Sync non eseguito
Fix: Copia prompt e esegui in Claude Code
/Users/pelleri/Documents/mcp-coder-expert/web-dashboard/components/ClaudeCodeSyncBanner.tsx/Users/pelleri/Documents/mcp-coder-expert/web-dashboard/app/dashboard/page.tsx
/Users/pelleri/Documents/mcp-coder-expert/web-dashboard/app/api/sync-status/route.ts
/Users/pelleri/Documents/mcp-coder-expert/src/tools/claudeCodeSync.ts/Users/pelleri/Documents/mcp-coder-expert/src/tools/configuration.ts
Il banner intelligente rende il processo di sync self-service e user-friendly:
- ✅ L'utente vede subito se è sincronizzato
- ✅ Copy-paste del prompt con 1 click
- ✅ Istruzioni chiare passo-passo
- ✅ Feedback visuale immediato
- ✅ Stats aggiornate in tempo reale
Risultato: L'utente può sincronizzare agenti e tools in < 30 secondi senza conoscere i comandi MCP! 🎉