cli-skills
CLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
Configuration module patterns for LlamaFarm. Covers Pydantic v2 models, JSONSchema generation, YAML processing, and validation.
$ npx -y skills add llama-farm/llamafarm --skill config-skills --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/config-skillsContext preview
The summary Claude sees to decide when to auto-load this skill.
Configuration module patterns for LlamaFarm. Covers Pydantic v2 models, JSONSchema generation, YAML processing, and validation.
name: config-skills description: Configuration module patterns for LlamaFarm. Covers Pydantic v2 models, JSONSchema generation, YAML processing, and validation. allowed-tools: Read, Grep, Glob user-invocable: false
Specialized patterns and best practices for the LlamaFarm configuration module (`config/`).
The config module provides YAML/TOML/JSON configuration loading with JSONSchema validation:
| File | Purpose | |------|---------| | `datamodel.py` | Generated Pydantic v2 models from JSONSchema | | `schema.yaml` | Source JSONSchema with `$ref` references | | `compile_schema.py` | Dereferences `$ref` to create `schema.deref.yaml` | | `generate_types.py` | Generates Python types via `datamodel-codegen` | | `validators.py` | Custom validators beyond JSONSchema capabilities | | `helpers/loader.py` | Config loading, saving, and format detection | | `helpers/generator.py` | Template-based config generation |
This module follows Python conventions from the shared skills:
| Topic | Link | Key Relevance | |-------|------|---------------| | Patterns | [python-skills/patterns.md](../python-skills/patterns.md) | Pydantic v2, dataclasses | | Typing | [python-skills/typing.md](../python-skills/typing.md) | Type hints, constrained types | | Testing | [python-skills/testing.md](../python-skills/testing.md) | Pytest fixtures, temp files | | Errors | [python-skills/error-handling.md](../python-skills/error-handling.md) | Custom exceptions | | Security | [python-skills/security.md](../python-skills/security.md) | Path traversal prevention |
| Checklist | Description | |-----------|-------------| | [pydantic.md](pydantic.md) | Pydantic v2 configuration patterns, nested models, constraints | | [jsonschema.md](jsonschema.md) | JSONSchema generation, dereferencing, validation |
The `datamodel.py` file is auto-generated from JSONSchema:
# Generated by datamodel-codegen from schema.deref.yaml
from pydantic import BaseModel, ConfigDict, Field, conint, constr
class Database(BaseModel):
model_config = ConfigDict(extra="forbid")
name: constr(pattern=r"^[a-z][a-z0-9_]*$", min_length=1, max_length=50)
type: Type
config: dict[str, Any] | None = Field(None, description="Database-specific configuration")JSONSchema draft-07 cannot express all constraints. Custom validators extend validation:
def validate_llamafarm_config(config_dict: dict[str, Any]) -> None:
"""Validate constraints beyond JSONSchema (uniqueness, references)."""
# Check for duplicate prompt names
prompt_names = [p.get("name") for p in config_dict.get("prompts", [])]
duplicates = [name for name in prompt_names if prompt_names.count(name) > 1]
if duplicates:
raise ValueError(f"Duplicate prompt set names: {', '.join(set(duplicates))}")Configuration files preserve user comments when modified:
from ruamel.yaml import YAML
from ruamel.yaml.comments import CommentedMap
def _get_ruamel_yaml() -> YAML:
yaml_instance = YAML()
yaml_instance.preserve_quotes = True
yaml_instance.indent(mapping=2, sequence=4, offset=2)
return yaml_instanceconfig/
├── pyproject.toml # UV-managed dependencies
├── schema.yaml # Source JSONSchema with $ref
├── schema.deref.yaml # Dereferenced schema (generated)
├── datamodel.py # Pydantic models (generated)
├── compile_schema.py # Schema compilation script
├── generate_types.py # Type generation script
├── validators.py # Custom validation beyond JSONSchema
├── validate_config.py # CLI validation wrapper
├── __init__.py # Public API exports
├── helpers/
│ ├── loader.py # Config loading/saving
│ └── generator.py # Template-based generation
├── templates/
│ └── default.yaml # Default config template
└── tests/
├── conftest.py # Shared fixtures
└── test_*.py # Test modulesWhen modifying the configuration schema:
1. **Edit** `schema.yaml` (or referenced schemas like `../rag/schema.yaml`) 2. **Run** `nx run generate-types` to compile and generate types 3. **Update** `validators.py` if new cross-field constraints are needed 4. **Test** with `uv run pytest config/tests/`
# Generate types from schema nx run generate-types # Validate a config file uv run python config/validate_config.py path/to/llamafarm.yaml --verbose # Run tests uv run pytest config/tests/ -v # Lint and format ruff check config/ --fix ruff format config/
Enterprise AI capabilities on your own hardware. No cloud required. LlamaFarm is an open-source AI platform that runs entirely on your hardware.
Repo: llama-farm/llamafarm
CLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
Comprehensive code review for diffs. Analyzes changed code for security vulnerabilities, anti-patterns, and quality issues. Auto-detects domain…
Commit changes, push to GitHub, and open a PR. Includes quality checks (security, patterns, simplification). Use --quick to skip checks.
Best practices for the Common utilities package in LlamaFarm. Covers HuggingFace Hub integration, GGUF model management, and shared utilities.
Designer subsystem patterns for LlamaFarm. Covers React 18, TanStack Query, TailwindCSS, and Radix UI.
Electron patterns for LlamaFarm Desktop. Covers main/renderer processes, IPC, security, and packaging.