3.2 KiB
3.2 KiB
Claude Instructions
Commit Messages
- NEVER add Claude attributions like "🤖 Generated with Claude Code" to commit messages
- NEVER add "Co-Authored-By: Claude noreply@anthropic.com" to commit messages
- Keep commit messages focused on the actual changes and their purpose
- Use conventional commit format when appropriate
- Be concise but descriptive about what was changed and why
Code Style
- Follow existing code conventions in the project
- Use appropriate linting tools (black, ruff, etc.) when available
- Maintain consistent naming and formatting
Testing
- Run existing tests before committing when available
- Write tests for new functionality when appropriate
- Verify changes work as expected
Documentation
- Update relevant documentation when making significant changes
- Keep README files current with new features or setup changes
- Document any new environment variables or configuration options
Python/Matplotlib Best Practices
- Always add
matplotlib.use("Agg")before importing matplotlib.pyplot to prevent runtime errors in headless environments
Makefile Best Practices
- Avoid variable substitutions - don't be afraid to be unDRY in the Makefile so engineers can copy and paste
- Use tabs not spaces, and for fuck sake be happy about it
Running OpenCompletion
Environment Setup
- Use
vars.shto set up environment variables - Required: MODEL_ENDPOINT_x and MODEL_API_KEY_x variables for AI models
- Run with:
source vars.sh && python app.py
Makefile Commands
make venv- Create virtual environment and install dependenciesmake init-db- Initialize database tablesmake test- Run all testsmake dev-setup- Install development dependencies
OpenCompletion Architecture
Frontend Structure
- Main chat interface is in
templates/chat.html - Base template with CSS is in
templates/base.html - JavaScript code is inline in chat.html for real-time chat functionality
- Uses Socket.IO for WebSocket communication
- Uses marked.js for Markdown rendering and DOMPurify for XSS protection
- Code blocks are rendered with highlight.js for syntax highlighting
Code Block Rendering
- Code blocks are processed in messages after markdown conversion
- Copy buttons are added via
addCopyButtonToCodeBlock()function (line 1176 in chat.html) - Code blocks support:
- Syntax highlighting via highlight.js
- Line numbers via
addLineNumbers()function - Truncation for long code blocks via
truncateCodeBlock()function - Copy functionality that preserves full content even when truncated
Message Processing Flow
- Messages received via Socket.IO events (chat_message, message_chunk for streaming)
- Markdown converted to HTML using marked.js
- HTML sanitized with DOMPurify
- Code blocks enhanced with copy buttons, syntax highlighting, and line numbers
Code Execution Integration (New)
- Integration with unfirecracker-code-executor service on cammy.foxhop.net
- Service supports 38 working languages with auto-detection
- Endpoints:
/execute- Execute code with specified language/run- Auto-detect language and execute
- Add play button next to copy button for code blocks
- Display execution results inline below code blocks