claude-mpm 4.15.2__py3-none-any.whl → 4.20.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +286 -0
  3. claude_mpm/agents/BASE_PM.md +255 -23
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +40 -0
  5. claude_mpm/agents/agent_loader.py +4 -4
  6. claude_mpm/agents/templates/agentic-coder-optimizer.json +9 -2
  7. claude_mpm/agents/templates/api_qa.json +7 -1
  8. claude_mpm/agents/templates/clerk-ops.json +8 -1
  9. claude_mpm/agents/templates/code_analyzer.json +4 -1
  10. claude_mpm/agents/templates/dart_engineer.json +11 -1
  11. claude_mpm/agents/templates/data_engineer.json +11 -1
  12. claude_mpm/agents/templates/documentation.json +6 -1
  13. claude_mpm/agents/templates/engineer.json +18 -1
  14. claude_mpm/agents/templates/gcp_ops_agent.json +8 -1
  15. claude_mpm/agents/templates/golang_engineer.json +11 -1
  16. claude_mpm/agents/templates/java_engineer.json +12 -2
  17. claude_mpm/agents/templates/local_ops_agent.json +216 -37
  18. claude_mpm/agents/templates/nextjs_engineer.json +11 -1
  19. claude_mpm/agents/templates/ops.json +8 -1
  20. claude_mpm/agents/templates/php-engineer.json +11 -1
  21. claude_mpm/agents/templates/project_organizer.json +9 -2
  22. claude_mpm/agents/templates/prompt-engineer.json +5 -1
  23. claude_mpm/agents/templates/python_engineer.json +19 -4
  24. claude_mpm/agents/templates/qa.json +7 -1
  25. claude_mpm/agents/templates/react_engineer.json +11 -1
  26. claude_mpm/agents/templates/refactoring_engineer.json +8 -1
  27. claude_mpm/agents/templates/research.json +4 -1
  28. claude_mpm/agents/templates/ruby-engineer.json +11 -1
  29. claude_mpm/agents/templates/rust_engineer.json +23 -8
  30. claude_mpm/agents/templates/security.json +6 -1
  31. claude_mpm/agents/templates/svelte-engineer.json +225 -0
  32. claude_mpm/agents/templates/ticketing.json +6 -1
  33. claude_mpm/agents/templates/typescript_engineer.json +11 -1
  34. claude_mpm/agents/templates/vercel_ops_agent.json +8 -1
  35. claude_mpm/agents/templates/version_control.json +8 -1
  36. claude_mpm/agents/templates/web_qa.json +7 -1
  37. claude_mpm/agents/templates/web_ui.json +11 -1
  38. claude_mpm/cli/commands/__init__.py +2 -0
  39. claude_mpm/cli/commands/configure.py +164 -16
  40. claude_mpm/cli/commands/configure_agent_display.py +6 -6
  41. claude_mpm/cli/commands/configure_behavior_manager.py +8 -8
  42. claude_mpm/cli/commands/configure_navigation.py +20 -18
  43. claude_mpm/cli/commands/configure_startup_manager.py +14 -14
  44. claude_mpm/cli/commands/configure_template_editor.py +8 -8
  45. claude_mpm/cli/commands/mpm_init.py +109 -24
  46. claude_mpm/cli/commands/skills.py +434 -0
  47. claude_mpm/cli/executor.py +2 -0
  48. claude_mpm/cli/interactive/__init__.py +3 -0
  49. claude_mpm/cli/interactive/skills_wizard.py +491 -0
  50. claude_mpm/cli/parsers/base_parser.py +7 -0
  51. claude_mpm/cli/parsers/skills_parser.py +137 -0
  52. claude_mpm/cli/startup.py +83 -0
  53. claude_mpm/commands/mpm-auto-configure.md +52 -0
  54. claude_mpm/commands/mpm-help.md +3 -0
  55. claude_mpm/commands/mpm-init.md +112 -6
  56. claude_mpm/commands/mpm-version.md +113 -0
  57. claude_mpm/commands/mpm.md +1 -0
  58. claude_mpm/config/agent_config.py +2 -2
  59. claude_mpm/constants.py +12 -0
  60. claude_mpm/core/config.py +42 -0
  61. claude_mpm/core/enums.py +18 -0
  62. claude_mpm/core/factories.py +1 -1
  63. claude_mpm/core/optimized_agent_loader.py +3 -3
  64. claude_mpm/core/types.py +2 -9
  65. claude_mpm/dashboard/static/js/dashboard.js +0 -14
  66. claude_mpm/dashboard/templates/index.html +3 -41
  67. claude_mpm/hooks/__init__.py +8 -0
  68. claude_mpm/hooks/claude_hooks/response_tracking.py +35 -1
  69. claude_mpm/hooks/session_resume_hook.py +121 -0
  70. claude_mpm/models/resume_log.py +340 -0
  71. claude_mpm/services/agents/auto_config_manager.py +1 -1
  72. claude_mpm/services/agents/deployment/agent_configuration_manager.py +1 -1
  73. claude_mpm/services/agents/deployment/agent_record_service.py +1 -1
  74. claude_mpm/services/agents/deployment/agent_validator.py +17 -1
  75. claude_mpm/services/agents/deployment/async_agent_deployment.py +1 -1
  76. claude_mpm/services/agents/deployment/local_template_deployment.py +1 -1
  77. claude_mpm/services/agents/deployment/validation/__init__.py +3 -1
  78. claude_mpm/services/agents/deployment/validation/validation_result.py +1 -9
  79. claude_mpm/services/agents/local_template_manager.py +1 -1
  80. claude_mpm/services/agents/recommender.py +47 -0
  81. claude_mpm/services/cli/resume_service.py +617 -0
  82. claude_mpm/services/cli/session_manager.py +87 -0
  83. claude_mpm/services/cli/session_resume_helper.py +352 -0
  84. claude_mpm/services/core/models/health.py +1 -28
  85. claude_mpm/services/core/path_resolver.py +1 -1
  86. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -1
  87. claude_mpm/services/infrastructure/monitoring/aggregator.py +12 -12
  88. claude_mpm/services/infrastructure/monitoring/base.py +5 -13
  89. claude_mpm/services/infrastructure/monitoring/network.py +7 -6
  90. claude_mpm/services/infrastructure/monitoring/process.py +13 -12
  91. claude_mpm/services/infrastructure/monitoring/resources.py +7 -6
  92. claude_mpm/services/infrastructure/monitoring/service.py +16 -15
  93. claude_mpm/services/infrastructure/resume_log_generator.py +439 -0
  94. claude_mpm/services/local_ops/__init__.py +1 -1
  95. claude_mpm/services/local_ops/crash_detector.py +1 -1
  96. claude_mpm/services/local_ops/health_checks/http_check.py +2 -1
  97. claude_mpm/services/local_ops/health_checks/process_check.py +2 -1
  98. claude_mpm/services/local_ops/health_checks/resource_check.py +2 -1
  99. claude_mpm/services/local_ops/health_manager.py +1 -1
  100. claude_mpm/services/local_ops/restart_manager.py +1 -1
  101. claude_mpm/services/mcp_config_manager.py +7 -131
  102. claude_mpm/services/session_manager.py +205 -1
  103. claude_mpm/services/shared/async_service_base.py +16 -27
  104. claude_mpm/services/shared/lifecycle_service_base.py +1 -14
  105. claude_mpm/services/socketio/handlers/__init__.py +5 -2
  106. claude_mpm/services/socketio/handlers/hook.py +10 -0
  107. claude_mpm/services/socketio/handlers/registry.py +4 -2
  108. claude_mpm/services/socketio/server/main.py +7 -7
  109. claude_mpm/services/unified/deployment_strategies/local.py +1 -1
  110. claude_mpm/services/version_service.py +104 -1
  111. claude_mpm/skills/__init__.py +42 -0
  112. claude_mpm/skills/agent_skills_injector.py +331 -0
  113. claude_mpm/skills/bundled/LICENSE_ATTRIBUTIONS.md +79 -0
  114. claude_mpm/skills/bundled/__init__.py +6 -0
  115. claude_mpm/skills/bundled/api-documentation.md +393 -0
  116. claude_mpm/skills/bundled/async-testing.md +571 -0
  117. claude_mpm/skills/bundled/code-review.md +143 -0
  118. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +75 -0
  119. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +184 -0
  120. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +107 -0
  121. claude_mpm/skills/bundled/collaboration/requesting-code-review/code-reviewer.md +146 -0
  122. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +118 -0
  123. claude_mpm/skills/bundled/database-migration.md +199 -0
  124. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +177 -0
  125. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +119 -0
  126. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +148 -0
  127. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +483 -0
  128. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +452 -0
  129. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +449 -0
  130. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +411 -0
  131. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +14 -0
  132. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +58 -0
  133. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +68 -0
  134. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +69 -0
  135. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +175 -0
  136. claude_mpm/skills/bundled/debugging/verification-before-completion/references/common-failures.md +213 -0
  137. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +314 -0
  138. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +227 -0
  139. claude_mpm/skills/bundled/docker-containerization.md +194 -0
  140. claude_mpm/skills/bundled/express-local-dev.md +1429 -0
  141. claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
  142. claude_mpm/skills/bundled/git-workflow.md +414 -0
  143. claude_mpm/skills/bundled/imagemagick.md +204 -0
  144. claude_mpm/skills/bundled/json-data-handling.md +223 -0
  145. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +74 -0
  146. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +32 -0
  147. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +47 -0
  148. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +65 -0
  149. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +30 -0
  150. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +16 -0
  151. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +328 -0
  152. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +602 -0
  153. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +915 -0
  154. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +916 -0
  155. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +752 -0
  156. claude_mpm/skills/bundled/main/mcp-builder/scripts/connections.py +150 -0
  157. claude_mpm/skills/bundled/main/mcp-builder/scripts/evaluation.py +372 -0
  158. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +209 -0
  159. claude_mpm/skills/bundled/main/skill-creator/scripts/init_skill.py +302 -0
  160. claude_mpm/skills/bundled/main/skill-creator/scripts/package_skill.py +111 -0
  161. claude_mpm/skills/bundled/main/skill-creator/scripts/quick_validate.py +65 -0
  162. claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
  163. claude_mpm/skills/bundled/pdf.md +141 -0
  164. claude_mpm/skills/bundled/performance-profiling.md +567 -0
  165. claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
  166. claude_mpm/skills/bundled/security-scanning.md +327 -0
  167. claude_mpm/skills/bundled/systematic-debugging.md +473 -0
  168. claude_mpm/skills/bundled/test-driven-development.md +378 -0
  169. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +123 -0
  170. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +145 -0
  171. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +543 -0
  172. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +741 -0
  173. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +470 -0
  174. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +458 -0
  175. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +639 -0
  176. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +304 -0
  177. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +96 -0
  178. claude_mpm/skills/bundled/testing/webapp-testing/examples/console_logging.py +35 -0
  179. claude_mpm/skills/bundled/testing/webapp-testing/examples/element_discovery.py +40 -0
  180. claude_mpm/skills/bundled/testing/webapp-testing/examples/static_html_automation.py +34 -0
  181. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +107 -0
  182. claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
  183. claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
  184. claude_mpm/skills/bundled/xlsx.md +157 -0
  185. claude_mpm/skills/registry.py +286 -0
  186. claude_mpm/skills/skill_manager.py +310 -0
  187. claude_mpm/skills/skills_registry.py +351 -0
  188. claude_mpm/skills/skills_service.py +730 -0
  189. claude_mpm/utils/agent_dependency_loader.py +2 -2
  190. {claude_mpm-4.15.2.dist-info → claude_mpm-4.20.3.dist-info}/METADATA +211 -33
  191. {claude_mpm-4.15.2.dist-info → claude_mpm-4.20.3.dist-info}/RECORD +195 -115
  192. claude_mpm/agents/INSTRUCTIONS_OLD_DEPRECATED.md +0 -602
  193. claude_mpm/dashboard/static/css/code-tree.css +0 -1639
  194. claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +0 -353
  195. claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +0 -235
  196. claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +0 -409
  197. claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +0 -435
  198. claude_mpm/dashboard/static/js/components/code-tree.js +0 -5869
  199. claude_mpm/dashboard/static/js/components/code-viewer.js +0 -1386
  200. {claude_mpm-4.15.2.dist-info → claude_mpm-4.20.3.dist-info}/WHEEL +0 -0
  201. {claude_mpm-4.15.2.dist-info → claude_mpm-4.20.3.dist-info}/entry_points.txt +0 -0
  202. {claude_mpm-4.15.2.dist-info → claude_mpm-4.20.3.dist-info}/licenses/LICENSE +0 -0
  203. {claude_mpm-4.15.2.dist-info → claude_mpm-4.20.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,225 @@
1
+ {
2
+ "name": "Svelte Engineer",
3
+ "description": "Specialized agent for modern Svelte 5 (Runes API) and SvelteKit development. Expert in reactive state management with $state, $derived, $effect, and $props. Provides production-ready code following Svelte 5 best practices with TypeScript integration. Supports legacy Svelte 4 patterns when needed.",
4
+ "schema_version": "1.3.0",
5
+ "agent_id": "svelte_engineer",
6
+ "agent_version": "1.1.0",
7
+ "template_version": "1.1.0",
8
+ "template_changelog": [
9
+ {
10
+ "version": "1.1.0",
11
+ "date": "2025-10-30",
12
+ "description": "Optimized for Svelte 5 as primary approach. Runes API prioritized over Svelte 4 patterns. Added Svelte 5 specific patterns and best practices. Enhanced TypeScript integration examples."
13
+ },
14
+ {
15
+ "version": "1.0.0",
16
+ "date": "2025-10-30",
17
+ "description": "Initial Svelte Engineer agent creation with Svelte 4/5, SvelteKit, Runes, and modern patterns"
18
+ }
19
+ ],
20
+ "agent_type": "engineer",
21
+ "metadata": {
22
+ "name": "Svelte Engineer",
23
+ "description": "Specialized agent for modern Svelte 5 (Runes API) and SvelteKit development. Expert in reactive state management with $state, $derived, $effect, and $props. Provides production-ready code following Svelte 5 best practices with TypeScript integration. Supports legacy Svelte 4 patterns when needed.",
24
+ "category": "engineering",
25
+ "tags": [
26
+ "svelte",
27
+ "svelte5",
28
+ "sveltekit",
29
+ "runes",
30
+ "reactivity",
31
+ "ssr",
32
+ "vite",
33
+ "typescript",
34
+ "performance",
35
+ "web-components"
36
+ ],
37
+ "author": "Claude MPM Team",
38
+ "created_at": "2025-10-30T00:00:00.000000Z",
39
+ "updated_at": "2025-10-30T00:00:00.000000Z",
40
+ "color": "orange"
41
+ },
42
+ "capabilities": {
43
+ "model": "sonnet",
44
+ "tools": [
45
+ "Read",
46
+ "Write",
47
+ "Edit",
48
+ "MultiEdit",
49
+ "Bash",
50
+ "Grep",
51
+ "Glob",
52
+ "WebSearch",
53
+ "TodoWrite"
54
+ ],
55
+ "resource_tier": "standard",
56
+ "max_tokens": 4096,
57
+ "temperature": 0.2,
58
+ "timeout": 900,
59
+ "memory_limit": 2048,
60
+ "cpu_limit": 50,
61
+ "network_access": true,
62
+ "file_access": {
63
+ "read_paths": [
64
+ "./"
65
+ ],
66
+ "write_paths": [
67
+ "./"
68
+ ]
69
+ }
70
+ },
71
+ "instructions": "# Svelte Engineer\n\n## Identity & Expertise\nModern Svelte 5 specialist delivering production-ready web applications with Runes API, SvelteKit framework, SSR/SSG, and exceptional performance. Expert in fine-grained reactive state management using $state, $derived, $effect, and $props. Provides truly reactive UI with minimal JavaScript and optimal Core Web Vitals.\n\n## Search-First Workflow (MANDATORY)\n\n**When to Search**:\n- Svelte 5 Runes API patterns and best practices\n- Migration strategies from Svelte 4 to Svelte 5\n- SvelteKit routing and load functions\n- SSR/SSG/CSR rendering modes\n- Form actions and progressive enhancement\n- Runes-based state management patterns\n- TypeScript integration with Svelte 5\n- Adapter configuration (Vercel, Node, Static)\n\n**Search Template**: \"Svelte 5 [feature] best practices 2025\" or \"SvelteKit [pattern] implementation\"\n\n**Validation Process**:\n1. Check official Svelte and SvelteKit documentation\n2. Verify with Svelte team examples and tutorials\n3. Cross-reference with community patterns (Svelte Society)\n4. Test with actual performance measurements\n\n## Core Expertise - Svelte 5 (PRIMARY)\n\n**Runes API - Modern Reactive State:**\n- **$state()**: Fine-grained reactive state management with automatic dependency tracking\n- **$derived()**: Computed values with automatic updates based on dependencies\n- **$effect()**: Side effects with automatic cleanup and batching, replaces onMount for effects\n- **$props()**: Type-safe component props with destructuring support\n- **$bindable()**: Two-way binding with parent components, replaces bind:prop\n- **$inspect()**: Development-time reactive debugging tool\n\n**Svelte 5 Advantages:**\n- Finer-grained reactivity (better performance than Svelte 4)\n- Explicit state declarations (clearer intent and maintainability)\n- Superior TypeScript integration with inference\n- Simplified component API (less magic, more predictable)\n- Improved server-side rendering performance\n- Signals-based architecture (predictable, composable)\n\n**When to Use Svelte 5 Runes:**\n- ALL new projects (default choice for 2025)\n- Modern applications requiring optimal performance\n- TypeScript-first projects needing strong type inference\n- Complex state management with computed values\n- Applications with fine-grained reactivity needs\n- Any project starting after Svelte 5 stable release\n\n## Svelte 5 Best Practices (PRIMARY)\n\n**State Management:**\n\u2705 Use `$state()` for local component state\n\u2705 Use `$derived()` for computed values (replaces `$:`)\n\u2705 Use `$effect()` for side effects (replaces `$:` and onMount for side effects)\n\u2705 Create custom stores with Runes for global state\n\n**Component API:**\n\u2705 Use `$props()` for type-safe props\n\u2705 Use `$bindable()` for two-way binding\n\u2705 Destructure props directly: `let { name, age } = $props()`\n\u2705 Provide defaults: `let { theme = 'light' } = $props()`\n\n**Performance:**\n\u2705 Runes provide fine-grained reactivity automatically\n\u2705 No need for manual optimization in most cases\n\u2705 Use `$effect` cleanup functions for subscriptions\n\u2705 Avoid unnecessary derived calculations\n\n**Migration from Svelte 4:**\n- `$: derived = ...` \u2192 `let derived = $derived(...)`\n- `$: { sideEffect(); }` \u2192 `$effect(() => { sideEffect(); })`\n- `export let prop` \u2192 `let { prop } = $props()`\n- Stores still work but consider Runes-based alternatives\n\n## Migrating to Svelte 5 from Svelte 4\n\n**When you encounter Svelte 4 code, proactively suggest Svelte 5 equivalents:**\n\n| Svelte 4 Pattern | Svelte 5 Equivalent | Benefit |\n|------------------|---------------------|---------|\n| `export let prop` | `let { prop } = $props()` | Type safety, destructuring |\n| `$: derived = compute(x)` | `let derived = $derived(compute(x))` | Explicit, clearer intent |\n| `$: { sideEffect(); }` | `$effect(() => { sideEffect(); })` | Explicit dependencies, cleanup |\n| `let x = writable(0)` | `let x = $state(0)` | Simpler, fine-grained reactivity |\n| `$x = 5` | `x = 5` | No store syntax needed |\n\n**Migration Strategy:**\n1. Start with new components using Svelte 5 Runes\n2. Gradually migrate existing components as you touch them\n3. Svelte 4 and 5 can coexist in the same project\n4. Prioritize high-traffic components for migration\n\n### Legacy Svelte 4 Support (When Needed)\n- **Reactive declarations**: $: label syntax (replaced by $derived)\n- **Stores**: writable, readable, derived, custom stores (still valid but consider Runes)\n- **Component lifecycle**: onMount, onDestroy, beforeUpdate, afterUpdate\n- **Two-way binding**: bind:value, bind:this patterns (still valid)\n- **Context API**: setContext, getContext for dependency injection\n- **Note**: Use only for maintaining existing Svelte 4 codebases\n\n### SvelteKit Framework\n- **File-based routing**: +page.svelte, +layout.svelte, +error.svelte\n- **Load functions**: +page.js (universal), +page.server.js (server-only)\n- **Form actions**: Progressive enhancement with +page.server.js actions\n- **Hooks**: handle, handleError, handleFetch for request interception\n- **Environment variables**: $env/static/private, $env/static/public, $env/dynamic/*\n- **Adapters**: Deployment to Vercel, Node, static hosts, Cloudflare\n- **API routes**: +server.js for REST/GraphQL endpoints\n\n### Advanced Features\n- **Actions**: use:action directive for element behaviors\n- **Transitions**: fade, slide, scale with custom easing\n- **Animations**: animate:flip, crossfade for smooth UI\n- **Slots**: Named slots, slot props, $$slots inspection\n- **Special elements**: <svelte:component>, <svelte:element>, <svelte:window>\n- **Preprocessors**: TypeScript, SCSS, PostCSS integration\n\n## Quality Standards\n\n**Type Safety**: TypeScript strict mode, typed props with Svelte 5 $props, runtime validation with Zod\n\n**Testing**: Vitest for unit tests, Playwright for E2E, @testing-library/svelte, 90%+ coverage\n\n**Performance**:\n- LCP < 2.5s (Largest Contentful Paint)\n- FID < 100ms (First Input Delay)\n- CLS < 0.1 (Cumulative Layout Shift)\n- Minimal JavaScript bundle (Svelte compiles to vanilla JS)\n- SSR/SSG for instant first paint\n\n**Accessibility**:\n- Semantic HTML and ARIA attributes\n- a11y warnings enabled (svelte.config.js)\n- Keyboard navigation and focus management\n- Screen reader testing\n\n## Production Patterns - Svelte 5 First\n\n### Pattern 1: Svelte 5 Runes Component (PRIMARY)\n\n```svelte\n<script lang=\"ts\">\n import type { User } from '$lib/types'\n\n let { user, onUpdate }: { user: User; onUpdate: (u: User) => void } = $props()\n\n let count = $state(0)\n let doubled = $derived(count * 2)\n let userName = $derived(user.firstName + ' ' + user.lastName)\n\n $effect(() => {\n console.log(`Count changed to ${count}`)\n return () => console.log('Cleanup')\n })\n\n function increment() {\n count += 1\n }\n</script>\n\n<div>\n <h1>Welcome, {userName}</h1>\n <p>Count: {count}, Doubled: {doubled}</p>\n <button onclick={increment}>Increment</button>\n</div>\n```\n\n### Pattern 2: Svelte 5 Form with Validation\n\n```svelte\n<script lang=\"ts\">\n interface FormData {\n email: string;\n password: string;\n }\n\n let { onSubmit } = $props<{ onSubmit: (data: FormData) => void }>();\n\n let email = $state('');\n let password = $state('');\n let touched = $state({ email: false, password: false });\n\n let emailError = $derived(\n touched.email && !email.includes('@') ? 'Invalid email' : null\n );\n let passwordError = $derived(\n touched.password && password.length < 8 ? 'Min 8 characters' : null\n );\n let isValid = $derived(!emailError && !passwordError && email && password);\n\n function handleSubmit() {\n if (isValid) {\n onSubmit({ email, password });\n }\n }\n</script>\n\n<form on:submit|preventDefault={handleSubmit}>\n <input\n bind:value={email}\n type=\"email\"\n on:blur={() => touched.email = true}\n />\n {#if emailError}<span>{emailError}</span>{/if}\n\n <input\n bind:value={password}\n type=\"password\"\n on:blur={() => touched.password = true}\n />\n {#if passwordError}<span>{passwordError}</span>{/if}\n\n <button disabled={!isValid}>Submit</button>\n</form>\n```\n\n### Pattern 3: Svelte 5 Data Fetching\n\n```svelte\n<script lang=\"ts\">\n import { onMount } from 'svelte';\n\n interface User {\n id: number;\n name: string;\n }\n\n let data = $state<User | null>(null);\n let loading = $state(true);\n let error = $state<string | null>(null);\n\n async function fetchData() {\n try {\n const response = await fetch('/api/user');\n data = await response.json();\n } catch (e) {\n error = e instanceof Error ? e.message : 'Unknown error';\n } finally {\n loading = false;\n }\n }\n\n onMount(fetchData);\n\n let displayName = $derived(data?.name ?? 'Anonymous');\n</script>\n\n{#if loading}\n <p>Loading...</p>\n{:else if error}\n <p>Error: {error}</p>\n{:else if data}\n <p>Welcome, {displayName}!</p>\n{/if}\n```\n\n### Pattern 4: Svelte 5 Custom Store (Runes-based)\n\n```typescript\n// lib/stores/counter.svelte.ts\nfunction createCounter(initialValue = 0) {\n let count = $state(initialValue);\n let doubled = $derived(count * 2);\n\n return {\n get count() { return count; },\n get doubled() { return doubled; },\n increment: () => count++,\n decrement: () => count--,\n reset: () => count = initialValue\n };\n}\n\nexport const counter = createCounter();\n```\n\n### Pattern 5: Svelte 5 Bindable Props\n\n```svelte\n<!-- Child: SearchInput.svelte -->\n<script lang=\"ts\">\n let { value = $bindable('') } = $props<{ value: string }>();\n</script>\n\n<input bind:value type=\"search\" />\n```\n\n```svelte\n<!-- Parent -->\n<script lang=\"ts\">\n import SearchInput from './SearchInput.svelte';\n let searchTerm = $state('');\n let results = $derived(searchTerm ? performSearch(searchTerm) : []);\n</script>\n\n<SearchInput bind:value={searchTerm} />\n<p>Found {results.length} results</p>\n```\n\n### Pattern 6: SvelteKit Page with Load\n\n```typescript\n// +page.server.ts\nexport const load = async ({ params }) => {\n const product = await fetchProduct(params.id);\n return { product };\n}\n```\n\n```svelte\n<!-- +page.svelte -->\n<script lang=\"ts\">\n let { data } = $props();\n</script>\n\n<h1>{data.product.name}</h1>\n```\n\n### Pattern 7: Form Actions (SvelteKit)\n\n```typescript\n// +page.server.ts\nimport { z } from 'zod';\n\nconst schema = z.object({\n email: z.string().email(),\n password: z.string().min(8)\n});\n\nexport const actions = {\n default: async ({ request }) => {\n const data = Object.fromEntries(await request.formData());\n const result = schema.safeParse(data);\n if (!result.success) {\n return fail(400, { errors: result.error });\n }\n // Process login\n }\n};\n```\n\n## Anti-Patterns to Avoid\n\n\u274c **Mixing Svelte 4 and 5 Patterns**: Using $: with Runes\n\u2705 **Instead**: Use Svelte 5 Runes consistently\n\n\u274c **Overusing Stores**: Using stores for component-local state\n\u2705 **Instead**: Use $state for local, stores for global\n\n\u274c **Client-only Data Fetching**: onMount + fetch\n\u2705 **Instead**: SvelteKit load functions\n\n\u274c **Missing Validation**: Accepting form data without validation\n\u2705 **Instead**: Zod schemas with proper error handling\n\n## Resources\n\n- Svelte 5 Docs: https://svelte.dev/docs\n- SvelteKit Docs: https://kit.svelte.dev/docs\n- Runes API: https://svelte-5-preview.vercel.app/docs/runes\n\nAlways prioritize Svelte 5 Runes for new projects.",
72
+ "knowledge": {
73
+ "domain_expertise": [
74
+ "Svelte 5 Runes API ($state, $derived, $effect, $props, $bindable)",
75
+ "Svelte 5 migration patterns and best practices",
76
+ "SvelteKit routing and load functions",
77
+ "SSR/SSG/CSR rendering modes",
78
+ "Form actions and progressive enhancement",
79
+ "Component actions and transitions",
80
+ "TypeScript integration with Svelte 5",
81
+ "Vite build optimization",
82
+ "Adapter configuration and deployment",
83
+ "Legacy Svelte 4 support when needed"
84
+ ],
85
+ "best_practices": [
86
+ "Search-first for Svelte 5 and SvelteKit features",
87
+ "Use Runes for ALL new Svelte 5 projects",
88
+ "Implement SSR with load functions",
89
+ "Progressive enhancement with form actions",
90
+ "Type-safe props with $props()",
91
+ "Stores for global state only",
92
+ "Component actions for reusable behaviors",
93
+ "Accessibility with semantic HTML",
94
+ "Performance optimization with minimal JS"
95
+ ],
96
+ "constraints": [
97
+ "MUST use WebSearch for medium-complex problems",
98
+ "MUST use Svelte 5 Runes for new projects",
99
+ "MUST implement progressive enhancement",
100
+ "MUST use TypeScript strict mode",
101
+ "SHOULD implement SSR with load functions",
102
+ "SHOULD use Zod for form validation",
103
+ "SHOULD meet Core Web Vitals targets",
104
+ "MUST test with Vitest and Playwright"
105
+ ],
106
+ "examples": [
107
+ {
108
+ "scenario": "Building dashboard with real-time data",
109
+ "approach": "Svelte 5 Runes for state, SvelteKit load for SSR, Runes-based stores for WebSocket"
110
+ },
111
+ {
112
+ "scenario": "User authentication flow",
113
+ "approach": "Form actions with Zod validation, Svelte 5 state management"
114
+ }
115
+ ]
116
+ },
117
+ "interactions": {
118
+ "input_format": {
119
+ "required_fields": [
120
+ "task"
121
+ ],
122
+ "optional_fields": [
123
+ "svelte_version",
124
+ "performance_requirements"
125
+ ]
126
+ },
127
+ "output_format": {
128
+ "structure": "markdown",
129
+ "includes": [
130
+ "component_design",
131
+ "implementation_code",
132
+ "routing_structure",
133
+ "testing_strategy"
134
+ ]
135
+ },
136
+ "handoff_agents": [
137
+ "typescript_engineer",
138
+ "web-qa"
139
+ ],
140
+ "triggers": [
141
+ "svelte development",
142
+ "sveltekit",
143
+ "svelte5",
144
+ "runes",
145
+ "ssr"
146
+ ]
147
+ },
148
+ "testing": {
149
+ "test_cases": [
150
+ {
151
+ "name": "Svelte 5 component with Runes",
152
+ "input": "Create user profile component",
153
+ "expected_behavior": "Implements Runes, type-safe props",
154
+ "validation_criteria": [
155
+ "implements_runes",
156
+ "type_safe_props",
157
+ "component_tests"
158
+ ]
159
+ }
160
+ ],
161
+ "performance_benchmarks": {
162
+ "response_time": 300,
163
+ "token_usage": 4096,
164
+ "success_rate": 0.95
165
+ }
166
+ },
167
+ "memory_routing": {
168
+ "description": "Stores Svelte 5 patterns, Runes usage, and performance optimizations",
169
+ "categories": [
170
+ "Svelte 5 Runes patterns and usage",
171
+ "SvelteKit routing and load functions",
172
+ "Form actions and progressive enhancement"
173
+ ],
174
+ "keywords": [
175
+ "svelte",
176
+ "svelte5",
177
+ "svelte-5",
178
+ "sveltekit",
179
+ "runes",
180
+ "runes-api",
181
+ "$state",
182
+ "$derived",
183
+ "$effect",
184
+ "$props",
185
+ "$bindable",
186
+ "$inspect",
187
+ "reactive",
188
+ "+page",
189
+ "+layout",
190
+ "+server",
191
+ "form-actions",
192
+ "progressive-enhancement",
193
+ "ssr",
194
+ "ssg",
195
+ "csr",
196
+ "prerender"
197
+ ],
198
+ "paths": [
199
+ "src/routes/",
200
+ "src/lib/",
201
+ "svelte.config.js"
202
+ ],
203
+ "extensions": [
204
+ ".svelte",
205
+ ".ts",
206
+ ".js",
207
+ ".server.ts"
208
+ ]
209
+ },
210
+ "dependencies": {
211
+ "python": [],
212
+ "system": [
213
+ "node>=20",
214
+ "npm>=10"
215
+ ],
216
+ "optional": false
217
+ },
218
+ "skills": [
219
+ "test-driven-development",
220
+ "systematic-debugging",
221
+ "performance-profiling",
222
+ "code-review",
223
+ "vite-local-dev"
224
+ ]
225
+ }
@@ -168,5 +168,10 @@
168
168
  "git"
169
169
  ],
170
170
  "optional": false
171
- }
171
+ },
172
+ "skills": [
173
+ "api-documentation",
174
+ "code-review",
175
+ "git-workflow"
176
+ ]
172
177
  }
@@ -271,5 +271,15 @@
271
271
  "npm>=10"
272
272
  ],
273
273
  "optional": false
274
- }
274
+ },
275
+ "skills": [
276
+ "test-driven-development",
277
+ "systematic-debugging",
278
+ "async-testing",
279
+ "performance-profiling",
280
+ "security-scanning",
281
+ "code-review",
282
+ "refactoring-patterns",
283
+ "git-workflow"
284
+ ]
275
285
  }
@@ -401,5 +401,12 @@
401
401
  "environment": "https://api.vercel.com/v10/projects/{projectId}/env",
402
402
  "teams": "https://api.vercel.com/v2/teams"
403
403
  }
404
- }
404
+ },
405
+ "skills": [
406
+ "docker-containerization",
407
+ "database-migration",
408
+ "security-scanning",
409
+ "git-workflow",
410
+ "systematic-debugging"
411
+ ]
405
412
  }
@@ -146,5 +146,12 @@
146
146
  "git"
147
147
  ],
148
148
  "optional": false
149
- }
149
+ },
150
+ "skills": [
151
+ "docker-containerization",
152
+ "database-migration",
153
+ "security-scanning",
154
+ "git-workflow",
155
+ "systematic-debugging"
156
+ ]
150
157
  }
@@ -389,5 +389,11 @@
389
389
  ],
390
390
  "priority": 90,
391
391
  "retention": "session"
392
- }
392
+ },
393
+ "skills": [
394
+ "test-driven-development",
395
+ "systematic-debugging",
396
+ "async-testing",
397
+ "performance-profiling"
398
+ ]
393
399
  }
@@ -175,5 +175,15 @@
175
175
  "token_usage": 10240,
176
176
  "success_rate": 0.95
177
177
  }
178
- }
178
+ },
179
+ "skills": [
180
+ "test-driven-development",
181
+ "systematic-debugging",
182
+ "async-testing",
183
+ "performance-profiling",
184
+ "security-scanning",
185
+ "code-review",
186
+ "refactoring-patterns",
187
+ "git-workflow"
188
+ ]
179
189
  }
@@ -20,6 +20,7 @@ from .mcp import manage_mcp
20
20
  from .memory import manage_memory
21
21
  from .monitor import manage_monitor
22
22
  from .run import run_session
23
+ from .skills import manage_skills
23
24
  from .tickets import list_tickets, manage_tickets
24
25
 
25
26
  __all__ = [
@@ -36,6 +37,7 @@ __all__ = [
36
37
  "manage_mcp",
37
38
  "manage_memory",
38
39
  "manage_monitor",
40
+ "manage_skills",
39
41
  # 'run_guarded_session', # Excluded from default exports (experimental)
40
42
  "manage_tickets",
41
43
  "run_doctor",
@@ -211,19 +211,21 @@ class ConfigureCommand(BaseCommand):
211
211
  if choice == "1":
212
212
  self._manage_agents()
213
213
  elif choice == "2":
214
- self._edit_templates()
214
+ self._manage_skills()
215
215
  elif choice == "3":
216
- self._manage_behaviors()
216
+ self._edit_templates()
217
217
  elif choice == "4":
218
+ self._manage_behaviors()
219
+ elif choice == "5":
218
220
  # If user saves and wants to proceed to startup, exit the configurator
219
221
  if self._manage_startup_configuration():
220
222
  self.console.print(
221
223
  "\n[green]Configuration saved. Exiting configurator...[/green]"
222
224
  )
223
225
  break
224
- elif choice == "5":
225
- self._switch_scope()
226
226
  elif choice == "6":
227
+ self._switch_scope()
228
+ elif choice == "7":
227
229
  self._show_version_info_interactive()
228
230
  elif choice == "l":
229
231
  # Check for pending agent changes
@@ -296,33 +298,33 @@ class ConfigureCommand(BaseCommand):
296
298
 
297
299
  # Use Text objects to properly display shortcuts with styling
298
300
  text_t = Text(" ")
299
- text_t.append("[t]", style="cyan bold")
301
+ text_t.append("[t]", style="bold blue")
300
302
  text_t.append(" Toggle agents (enable/disable multiple)")
301
303
  self.console.print(text_t)
302
304
 
303
305
  text_c = Text(" ")
304
- text_c.append("[c]", style="cyan bold")
306
+ text_c.append("[c]", style="bold blue")
305
307
  text_c.append(" Customize agent template")
306
308
  self.console.print(text_c)
307
309
 
308
310
  text_v = Text(" ")
309
- text_v.append("[v]", style="cyan bold")
311
+ text_v.append("[v]", style="bold blue")
310
312
  text_v.append(" View agent details")
311
313
  self.console.print(text_v)
312
314
 
313
315
  text_r = Text(" ")
314
- text_r.append("[r]", style="cyan bold")
316
+ text_r.append("[r]", style="bold blue")
315
317
  text_r.append(" Reset agent to defaults")
316
318
  self.console.print(text_r)
317
319
 
318
320
  text_b = Text(" ")
319
- text_b.append("[b]", style="cyan bold")
321
+ text_b.append("[b]", style="bold blue")
320
322
  text_b.append(" Back to main menu")
321
323
  self.console.print(text_b)
322
324
 
323
325
  self.console.print()
324
326
 
325
- choice = Prompt.ask("[bold cyan]Select an option[/bold cyan]", default="b")
327
+ choice = Prompt.ask("[bold blue]Select an option[/bold blue]", default="b")
326
328
 
327
329
  if choice == "b":
328
330
  break
@@ -361,32 +363,32 @@ class ConfigureCommand(BaseCommand):
361
363
  # Show menu
362
364
  self.console.print("\n[bold]Toggle Agent Status:[/bold]")
363
365
  text_toggle = Text(" ")
364
- text_toggle.append("[t]", style="cyan bold")
366
+ text_toggle.append("[t]", style="bold blue")
365
367
  text_toggle.append(" Enter agent IDs to toggle (e.g., '1,3,5' or '1-4')")
366
368
  self.console.print(text_toggle)
367
369
 
368
370
  text_all = Text(" ")
369
- text_all.append("[a]", style="cyan bold")
371
+ text_all.append("[a]", style="bold blue")
370
372
  text_all.append(" Enable all agents")
371
373
  self.console.print(text_all)
372
374
 
373
375
  text_none = Text(" ")
374
- text_none.append("[n]", style="cyan bold")
376
+ text_none.append("[n]", style="bold blue")
375
377
  text_none.append(" Disable all agents")
376
378
  self.console.print(text_none)
377
379
 
378
380
  text_save = Text(" ")
379
- text_save.append("[s]", style="green bold")
381
+ text_save.append("[s]", style="bold green")
380
382
  text_save.append(" Save changes and return")
381
383
  self.console.print(text_save)
382
384
 
383
385
  text_cancel = Text(" ")
384
- text_cancel.append("[c]", style="yellow bold")
386
+ text_cancel.append("[c]", style="bold magenta")
385
387
  text_cancel.append(" Cancel (discard changes)")
386
388
  self.console.print(text_cancel)
387
389
 
388
390
  choice = (
389
- Prompt.ask("[bold cyan]Select an option[/bold cyan]", default="s")
391
+ Prompt.ask("[bold blue]Select an option[/bold blue]", default="s")
390
392
  .strip()
391
393
  .lower()
392
394
  )
@@ -473,6 +475,152 @@ class ConfigureCommand(BaseCommand):
473
475
  # to accept a header callback in the future. For now, just delegate.
474
476
  self.behavior_manager.manage_behaviors()
475
477
 
478
+ def _manage_skills(self) -> None:
479
+ """Skills management interface."""
480
+ from ...cli.interactive.skills_wizard import SkillsWizard
481
+ from ...skills.skill_manager import get_manager
482
+
483
+ wizard = SkillsWizard()
484
+ manager = get_manager()
485
+
486
+ while True:
487
+ self.console.clear()
488
+ self._display_header()
489
+
490
+ self.console.print("\n[bold]Skills Management Options:[/bold]\n")
491
+ self.console.print(" [1] View Available Skills")
492
+ self.console.print(" [2] Configure Skills for Agents")
493
+ self.console.print(" [3] View Current Skill Mappings")
494
+ self.console.print(" [4] Auto-Link Skills to Agents")
495
+ self.console.print(" [b] Back to Main Menu")
496
+ self.console.print()
497
+
498
+ choice = Prompt.ask("[bold blue]Select an option[/bold blue]", default="b")
499
+
500
+ if choice == "1":
501
+ # View available skills
502
+ self.console.clear()
503
+ self._display_header()
504
+ wizard.list_available_skills()
505
+ Prompt.ask("\nPress Enter to continue")
506
+
507
+ elif choice == "2":
508
+ # Configure skills interactively
509
+ self.console.clear()
510
+ self._display_header()
511
+
512
+ # Get list of enabled agents
513
+ agents = self.agent_manager.discover_agents()
514
+ enabled_agents = [
515
+ a.name
516
+ for a in agents
517
+ if self.agent_manager.get_pending_state(a.name)
518
+ ]
519
+
520
+ if not enabled_agents:
521
+ self.console.print(
522
+ "[yellow]No agents are currently enabled.[/yellow]"
523
+ )
524
+ self.console.print(
525
+ "Please enable agents first in Agent Management."
526
+ )
527
+ Prompt.ask("\nPress Enter to continue")
528
+ continue
529
+
530
+ # Run skills wizard
531
+ success, mapping = wizard.run_interactive_selection(enabled_agents)
532
+
533
+ if success:
534
+ # Save the configuration
535
+ manager.save_mappings_to_config()
536
+ self.console.print("\n[green]✓ Skills configuration saved![/green]")
537
+ else:
538
+ self.console.print(
539
+ "\n[yellow]Skills configuration cancelled.[/yellow]"
540
+ )
541
+
542
+ Prompt.ask("\nPress Enter to continue")
543
+
544
+ elif choice == "3":
545
+ # View current mappings
546
+ self.console.clear()
547
+ self._display_header()
548
+
549
+ self.console.print("\n[bold]Current Skill Mappings:[/bold]\n")
550
+
551
+ mappings = manager.list_agent_skill_mappings()
552
+ if not mappings:
553
+ self.console.print("[dim]No skill mappings configured yet.[/dim]")
554
+ else:
555
+ from rich.table import Table
556
+
557
+ table = Table(show_header=True, header_style="bold cyan")
558
+ table.add_column("Agent", style="yellow")
559
+ table.add_column("Skills", style="green")
560
+
561
+ for agent_id, skills in mappings.items():
562
+ skills_str = (
563
+ ", ".join(skills) if skills else "[dim](none)[/dim]"
564
+ )
565
+ table.add_row(agent_id, skills_str)
566
+
567
+ self.console.print(table)
568
+
569
+ Prompt.ask("\nPress Enter to continue")
570
+
571
+ elif choice == "4":
572
+ # Auto-link skills
573
+ self.console.clear()
574
+ self._display_header()
575
+
576
+ self.console.print("\n[bold]Auto-Linking Skills to Agents...[/bold]\n")
577
+
578
+ # Get enabled agents
579
+ agents = self.agent_manager.discover_agents()
580
+ enabled_agents = [
581
+ a.name
582
+ for a in agents
583
+ if self.agent_manager.get_pending_state(a.name)
584
+ ]
585
+
586
+ if not enabled_agents:
587
+ self.console.print(
588
+ "[yellow]No agents are currently enabled.[/yellow]"
589
+ )
590
+ self.console.print(
591
+ "Please enable agents first in Agent Management."
592
+ )
593
+ Prompt.ask("\nPress Enter to continue")
594
+ continue
595
+
596
+ # Auto-link
597
+ mapping = wizard._auto_link_skills(enabled_agents)
598
+
599
+ # Display preview
600
+ self.console.print("Auto-linked skills:\n")
601
+ for agent_id, skills in mapping.items():
602
+ self.console.print(f" [yellow]{agent_id}[/yellow]:")
603
+ for skill in skills:
604
+ self.console.print(f" - {skill}")
605
+
606
+ # Confirm
607
+ confirm = Confirm.ask("\nApply this configuration?", default=True)
608
+
609
+ if confirm:
610
+ wizard._apply_skills_configuration(mapping)
611
+ manager.save_mappings_to_config()
612
+ self.console.print("\n[green]✓ Auto-linking complete![/green]")
613
+ else:
614
+ self.console.print("\n[yellow]Auto-linking cancelled.[/yellow]")
615
+
616
+ Prompt.ask("\nPress Enter to continue")
617
+
618
+ elif choice == "b":
619
+ break
620
+ else:
621
+ self.console.print("[red]Invalid choice. Please try again.[/red]")
622
+ Prompt.ask("\nPress Enter to continue")
623
+
476
624
  def _display_behavior_files(self) -> None:
477
625
  """Display current behavior files."""
478
626
  self.behavior_manager.display_behavior_files()
@@ -72,9 +72,9 @@ class AgentDisplay:
72
72
  )
73
73
 
74
74
  table.add_column("ID", style="dim", width=3)
75
- table.add_column("Name", style="cyan", width=22)
75
+ table.add_column("Name", style="bold blue", width=22)
76
76
  table.add_column("Status", width=12)
77
- table.add_column("Description", style="bold cyan", width=45)
77
+ table.add_column("Description", style="bold", width=45)
78
78
  table.add_column("Model/Tools", style="dim", width=20)
79
79
 
80
80
  for idx, agent in enumerate(agents, 1):
@@ -135,10 +135,10 @@ class AgentDisplay:
135
135
  title += f" [yellow]({pending_count} change{'s' if pending_count != 1 else ''} pending)[/yellow]"
136
136
 
137
137
  table = Table(title=title, box=ROUNDED, show_lines=True, expand=True)
138
- table.add_column("ID", justify="right", style="cyan", width=5)
138
+ table.add_column("ID", justify="right", style="bold blue", width=5)
139
139
  table.add_column("Name", style="bold", width=22)
140
140
  table.add_column("Status", width=20)
141
- table.add_column("Description", style="bold cyan", width=45)
141
+ table.add_column("Description", style="bold", width=45)
142
142
 
143
143
  for idx, agent in enumerate(agents, 1):
144
144
  current_state = self.agent_manager.is_agent_enabled(agent.name)
@@ -164,7 +164,7 @@ class AgentDisplay:
164
164
  if len(agent.description) > 42
165
165
  else agent.description
166
166
  ),
167
- style="cyan",
167
+ style="",
168
168
  )
169
169
 
170
170
  table.add_row(str(idx), agent.name, status, desc_display)
@@ -247,7 +247,7 @@ class AgentDisplay:
247
247
  detail_text.strip(),
248
248
  title=f"[bold]{agent.name} Details[/bold]",
249
249
  box=ROUNDED,
250
- style="cyan",
250
+ style="blue",
251
251
  )
252
252
 
253
253
  self.console.print(panel)