# CLAUDE.md

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

## Project Overview

This is the documentation project for MotrixSim, a high-performance physics simulation engine for multibody dynamics and robotics simulation. The documentation is built using Sphinx and targets both Chinese and English audiences.

## Key Commands

### Building Documentation

-   **Build HTML**: `make html` or `sphinx-build -b html source build/html`
-   **Clean build**: `make clean` followed by `make html`
-   **Serve locally**: `python -m http.server 8000 -d build/html`
-   **Watch mode**: Use `sphinx-autobuild source build/html --host 0.0.0.0 --port 8000`

### Development Tools

-   **Check links**: `make linkcheck`
-   **Build PDF**: `make latexpdf` (requires LaTeX)
-   **Build single HTML**: `make singlehtml`
-   **Build EPUB**: `make epub`

## Documentation Structure

### Source Organization

-   **source/**: Main documentation source files
    -   **index.md**: Landing page with project overview and videos
    -   **user_guide/**: User documentation and tutorials
    -   **api_reference/**: API documentation and reference
    -   **en/**: English language content
    -   **zh_CN/**: Chinese language content
    -   **\_static/**: Static assets (images, videos, CSS, JS)

### User Guide Structure

-   **getting_started/**: Installation and quick start guides
-   **overview/**: Project overview and comparisons
-   **kinematics/**: Kinematics documentation (joints, bodies, sensors, etc.)
-   **main_function/**: Core functionality documentation
-   **render/**: Rendering and visualization documentation

### API Reference Structure

-   **core/**: Core API modules
-   **ik/**: Inverse kinematics API
-   **rendering/**: Rendering and visualization API
-   **low/**: Low-level API (excluded from main documentation)

## Build Configuration

### Sphinx Configuration (conf.py)

-   **Theme**: PyData Sphinx Theme with custom branding
-   **Extensions**:
    -   sphinx.ext.autodoc (API documentation from docstrings)
    -   sphinx.ext.napoleon (NumPy/Google style docstrings)
    -   sphinx.ext.autosummary (automated summaries)
    -   myst_parser (Markdown support)
    -   sphinx-design (design components)
    -   sphinx_copybutton (code copy functionality)
-   **Language Support**: Chinese (zh_CN) and English with automatic content copying
-   **Autodoc**: Automatic API documentation generation from Python docstrings

### Dependencies

Documentation dependencies are managed in the parent `pyproject.toml`:

```toml
docs = [
    "sphinx",
    "autodocsumm",
    "pydata-sphinx-theme",
    "myst-parser",
    "sphinx-copybutton",
    "sphinx-subfigure",
    "sphinxcontrib-video",
    "sphinx-togglebutton",
    "sphinx-design",
]
```

## Content Guidelines

### Documentation Style

-   **Primary Language**: Chinese (zh_CN) with English translations
-   **Format**: Markdown (.md) files using MyST parser
-   **Code Examples**: Include practical code examples with proper syntax highlighting
-   **API Documentation**: Use NumPy/Google style docstrings for autodoc generation

### Media and Assets

-   **Videos**: Embedded using sphinxcontrib-video extension
-   **Images**: Stored in `_static/images/` with poster images for videos
-   **Static Files**: Custom CSS and JavaScript in `_static/` directory
-   **Logos**: Light and dark theme variants available

### Multilingual Support

-   **Default Language**: Chinese (zh_CN)
-   **Content Copying**: Automatic copying of language-specific content during build
-   **Theme**: Supports both light and dark themes with appropriate logos

## Development Workflow

### Adding New Documentation

1. Create Markdown files in appropriate directory (user_guide/ or api_reference/)
2. Follow existing structure and naming conventions
3. Update table of contents in relevant index.md files
4. Test build locally before committing

### API Documentation

1. Write docstrings in Python source code using NumPy/Google style
2. Use autodoc directives to generate API documentation
3. Organize API docs by functional modules
4. Include examples and usage notes

### Building and Testing

1. Always build locally before committing: `make html`
2. Check for broken links: `make linkcheck`
3. Verify multilingual content works correctly
4. Test all embedded media and interactive elements

## File Naming Conventions

-   Use lowercase with underscores for file names
-   Index files should be named `index.md`
-   API documentation files should match module names
-   Media files should be descriptive and use appropriate extensions

## Integration Notes

-   This documentation project is part of the larger motrixsim-py package
-   The build system automatically detects and documents the motrixsim package
-   Documentation is deployed to ReadTheDocs at https://motrixsim.readthedocs.io
-   Source code is hosted at https://github.com/Motphys/motrixsim-docs
