Files
dify/CLAUDE.md
-LAN- fa4d3bba86
Some checks are pending
autofix.ci / autofix (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
feat: add CLAUDE.md for LLM-assisted development guidance (#23946)
2025-08-18 10:13:44 +08:00

2.7 KiB

CLAUDE.md

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

Project Overview

Dify is an open-source platform for developing LLM applications with an intuitive interface combining agentic AI workflows, RAG pipelines, agent capabilities, and model management.

The codebase consists of:

  • Backend API (/api): Python Flask application with Domain-Driven Design architecture
  • Frontend Web (/web): Next.js 15 application with TypeScript and React 19
  • Docker deployment (/docker): Containerized deployment configurations

Development Commands

Backend (API)

All Python commands must be prefixed with uv run --project api:

# Start development servers
./dev/start-api                   # Start API server
./dev/start-worker                # Start Celery worker

# Run tests
uv run --project api pytest      # Run all tests
uv run --project api pytest tests/unit_tests/     # Unit tests only
uv run --project api pytest tests/integration_tests/  # Integration tests

# Code quality
./dev/reformat                    # Run all formatters and linters
uv run --project api ruff check --fix ./    # Fix linting issues
uv run --project api ruff format ./         # Format code
uv run --project api mypy .                 # Type checking

Frontend (Web)

cd web
pnpm lint                         # Run ESLint
pnpm eslint-fix                   # Fix ESLint issues
pnpm test                         # Run Jest tests

Testing Guidelines

Backend Testing

  • Use pytest for all backend tests
  • Write tests first (TDD approach)
  • Test structure: Arrange-Act-Assert

Code Style Requirements

Python

  • Use type hints for all functions and class attributes
  • No Any types unless absolutely necessary
  • Implement special methods (__repr__, __str__) appropriately

TypeScript/JavaScript

  • Strict TypeScript configuration
  • ESLint with Prettier integration
  • Avoid any type

Important Notes

  • Environment Variables: Always use UV for Python commands: uv run --project api <command>
  • Comments: Only write meaningful comments that explain "why", not "what"
  • File Creation: Always prefer editing existing files over creating new ones
  • Documentation: Don't create documentation files unless explicitly requested
  • Code Quality: Always run ./dev/reformat before committing backend changes

Common Development Tasks

Adding a New API Endpoint

  1. Create controller in /api/controllers/
  2. Add service logic in /api/services/
  3. Update routes in controller's __init__.py
  4. Write tests in /api/tests/

Project-Specific Conventions

  • All async tasks use Celery with Redis as broker