Files
serena/CLAUDE.md
T
Michael Panchenko bdaedfd3e5 Added Claude.md
2025-06-12 15:09:38 +02:00

3.3 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Essential Commands

This project uses uv for dependency management and poe for task orchestration:

  • Linting: uv run poe lint (only allowed command for linting)
  • Formatting: uv run poe format (only allowed command for formatting)
  • Type checking: uv run poe type-check (only allowed command for type checking)
  • Testing: uv run poe test [args] (preferred) or uv run pytest [args]

Important: Always run format, type-check and test at the end of tasks to ensure code quality. Fix any issues and re-run until they pass.

Architecture Overview

Serena is a powerful coding agent toolkit that turns LLMs into fully-featured agents working directly on codebases through semantic code retrieval and editing tools.

Core Components

  • src/serena/: Main package containing core functionality

    • mcp.py: Model Context Protocol server implementation
    • agno.py: Agno framework integration for model-agnostic agents
    • agent.py: Core agent implementation with semantic tools
    • llm/: LLM integration modules
    • util/: Utility functions and helpers
  • src/multilspy/: Language server integration layer

    • language_servers/: Language-specific implementations
      • Python (pyright/jedi), Java (Eclipse JDTLS), TypeScript/JavaScript
      • C#, Rust, Go, Ruby, C++, PHP support
    • Provides semantic code analysis through Language Server Protocol (LSP)
  • src/interprompt/: Template and prompt management system

Key Design Principles

  • Semantic Code Understanding: Uses language servers (LSP) for symbol-level code analysis rather than text-based approaches
  • Multiple Integration Methods: Can be used as MCP server, Agno agent, or integrated into custom frameworks
  • Language Agnostic: Supports multiple programming languages through language server adapters
  • Context and Mode System: Configurable behavior for different environments (desktop-app, ide-assistant, agent)

Integration Patterns

  • MCP Server: Primary integration method for Claude Desktop and other MCP clients
  • Agno Agent: Model-agnostic agent framework for any LLM with GUI support
  • Framework Adapter: Tools can be adapted to any agent framework (example: SerenaAgnoToolkit)

Configuration System

Four-layer configuration hierarchy:

  1. serena_config.yml - Global settings
  2. CLI arguments - Client-specific overrides
  3. .serena/project.yml - Project-specific settings
  4. Active modes - Runtime behavior modification

The codebase implements sophisticated semantic code operations through language servers, enabling precise symbol-level editing and code understanding that goes beyond simple text manipulation.

Working on Serena's Code

Important: When working on this codebase, remember that you are using Serena's own tools to improve Serena itself. This means:

  • You can use Serena's semantic tools (find_symbol, replace_symbol_body, search_for_pattern, etc.) to analyze and edit Serena's own source code
  • When asked to "perform a task on Serena", you're being asked to modify/improve the current Serena codebase
  • You have access to the full power of Serena's semantic code understanding to work on Serena's code