/** * Claude Plugin for DSS Admin UI * * Provides Claude AI integration features: * - Enhanced AI assistant capabilities * - Code generation commands * - Design token analysis * - Component suggestions */ const ClaudePlugin = { id: 'claude-ai', name: 'Claude AI Assistant', version: '1.0.0', description: 'Enhanced Claude AI integration for design system workflows', author: 'DSS Team', icon: '🤖', category: 'ai', enabledByDefault: true, // Plugin settings schema settings: [ { key: 'model', label: 'Claude Model', type: 'select', options: [ { value: 'claude-3-sonnet', label: 'Claude 3 Sonnet (Fast)' }, { value: 'claude-3-opus', label: 'Claude 3 Opus (Advanced)' }, { value: 'claude-3-haiku', label: 'Claude 3 Haiku (Quick)' } ], default: 'claude-3-sonnet' }, { key: 'autoSuggest', label: 'Auto-suggest improvements', type: 'boolean', default: true }, { key: 'contextDepth', label: 'Context Depth', type: 'select', options: [ { value: 'minimal', label: 'Minimal' }, { value: 'standard', label: 'Standard' }, { value: 'deep', label: 'Deep Analysis' } ], default: 'standard' } ], // Commands provided by this plugin commands: [ { name: 'analyze-tokens', description: 'Analyze design tokens with Claude AI', icon: '🎨', execute: async (ctx, args) => { ctx.log('Analyzing tokens...'); return { success: true, message: 'Token analysis complete' }; } }, { name: 'suggest-components', description: 'Get component suggestions based on project analysis', icon: '🧩', execute: async (ctx, args) => { ctx.log('Generating component suggestions...'); return { success: true, message: 'Suggestions generated' }; } }, { name: 'generate-docs', description: 'Generate documentation for components', icon: '📝', execute: async (ctx, args) => { ctx.log('Generating documentation...'); return { success: true, message: 'Documentation generated' }; } }, { name: 'review-code', description: 'Review generated code for best practices', icon: '🔍', execute: async (ctx, args) => { ctx.log('Reviewing code...'); return { success: true, message: 'Code review complete' }; } } ], // UI panels provided by this plugin panels: [ { id: 'claude-insights', name: 'AI Insights', icon: '💡', position: 'sidebar', render: (container, ctx) => { container.innerHTML = `

AI Insights

Run an analysis to see AI-powered insights about your design system.

`; } } ], // Lifecycle hooks onInit: async (ctx) => { ctx.log('Claude plugin initializing...'); // Register hooks for AI-related events ctx.registerHook('chat:message', async (data) => { // Intercept chat messages for AI processing hints return data; }); ctx.registerHook('project:analyzed', async (data) => { // Auto-generate insights when project is analyzed const settings = ctx.getSettings(); if (settings.autoSuggest) { ctx.emit('claude:insights-ready', { type: 'auto', project: data.projectId }); } }); ctx.log('Claude plugin initialized'); }, onEnable: async (ctx) => { ctx.log('Claude plugin enabled'); // Add Claude-specific styles const style = document.createElement('style'); style.id = 'claude-plugin-styles'; style.textContent = ` .claude-insights-panel { padding: 12px; } .claude-insights-panel h4 { margin: 0 0 12px 0; font-size: 14px; color: var(--text-primary); } .insights-content { background: var(--bg-secondary); border-radius: 6px; padding: 12px; margin-bottom: 12px; min-height: 100px; } .insight-placeholder { color: var(--text-muted); font-size: 13px; margin: 0; } .claude-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; background: linear-gradient(135deg, #7c3aed, #a855f7); color: white; border-radius: 12px; font-size: 11px; font-weight: 500; } .claude-suggestion { border-left: 3px solid #a855f7; padding-left: 12px; margin: 8px 0; } `; document.head.appendChild(style); }, onDisable: async (ctx) => { ctx.log('Claude plugin disabled'); // Remove Claude-specific styles const style = document.getElementById('claude-plugin-styles'); if (style) { style.remove(); } // Unregister hooks ctx.unregisterHook('chat:message'); ctx.unregisterHook('project:analyzed'); }, onDestroy: async (ctx) => { ctx.log('Claude plugin destroyed'); } }; export default ClaudePlugin;