Claude-skill-registry config-skills
Configuration module patterns for LlamaFarm. Covers Pydantic v2 models, JSONSchema generation, YAML processing, and validation.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/config-skills" ~/.claude/skills/majiayu000-claude-skill-registry-config-skills && rm -rf "$T"
manifest:
skills/data/config-skills/SKILL.mdsource content
Config Skills for LlamaFarm
Specialized patterns and best practices for the LlamaFarm configuration module (
config/).
Module Overview
The config module provides YAML/TOML/JSON configuration loading with JSONSchema validation:
| File | Purpose |
|---|---|
| Generated Pydantic v2 models from JSONSchema |
| Source JSONSchema with references |
| Dereferences to create |
| Generates Python types via |
| Custom validators beyond JSONSchema capabilities |
| Config loading, saving, and format detection |
| Template-based config generation |
Links to Shared Skills
This module follows Python conventions from the shared skills:
| Topic | Link | Key Relevance |
|---|---|---|
| Patterns | python-skills/patterns.md | Pydantic v2, dataclasses |
| Typing | python-skills/typing.md | Type hints, constrained types |
| Testing | python-skills/testing.md | Pytest fixtures, temp files |
| Errors | python-skills/error-handling.md | Custom exceptions |
| Security | python-skills/security.md | Path traversal prevention |
Framework-Specific Checklists
| Checklist | Description |
|---|---|
| pydantic.md | Pydantic v2 configuration patterns, nested models, constraints |
| jsonschema.md | JSONSchema generation, dereferencing, validation |
Tech Stack
- Python: 3.11+
- Pydantic: v2 with
,ConfigDict
, constrained typesField - JSONSchema: Draft-07 with
dereferencing via$refjsonref - YAML:
for comment-preserving read/writeruamel.yaml - Code Generation:
for schema-to-Pydanticdatamodel-codegen
Key Patterns
Generated Pydantic Models
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")
Custom Validators for Cross-Field Constraints
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))}")
Comment-Preserving YAML with ruamel.yaml
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_instance
Directory Structure
config/ ├── 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 modules
Workflow: Schema Changes
When modifying the configuration schema:
- Edit
(or referenced schemas likeschema.yaml
)../rag/schema.yaml - Run
to compile and generate typesnx run generate-types - Update
if new cross-field constraints are neededvalidators.py - Test with
uv run pytest config/tests/
Common Commands
# 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/