mcpField
C
config-skills

config-skills

github.com/llama-farm開発83642 回インストール21 週間前に更新
リポジトリ

config-skills について

config-skills は、LlamaFarm の `config/` モジュール開発向けスキルです。スキーマに基づく設定の読み込みと検証、Pydantic モデル生成、コメントを保持する YAML の扱い方を説明します。

主な機能

  1. 01YAML、TOML、JSON の読み込み
  2. 02JSONSchema 検証のパターン
  3. 03Pydantic モデルの生成
  4. 04フィールド間の独自検証
  5. 05コメントを保持した YAML 編集

活用シーン

  1. 01設定スキーマの変更
  2. 02スキーマからの Python 型生成
  3. 03設定ファイルの検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/llama-farm/llamafarm --skill config-skills

インストール後、Claude Code で/config-skillsを入力して読み込まれたか確認します。

同梱ファイルjsonschema.mdpydantic.md

詳細

LlamaFarm の設定スキル

LlamaFarm の設定モジュール(config/)に特化したパターンとベストプラクティスです。

モジュールの概要

設定モジュールは、JSONSchema による検証に対応した YAML/TOML/JSON の設定読み込み機能を提供します。

ファイル用途
datamodel.pyJSONSchema から生成された Pydantic v2 モデル
schema.yaml$ref 参照を含む JSONSchema のソース
compile_schema.py$ref を解決して schema.deref.yaml を作成
generate_types.pydatamodel-codegen による Python 型の生成
validators.pyJSONSchema の機能を超えるカスタムバリデーター
helpers/loader.py設定の読み込み、保存、形式の検出
helpers/generator.pyテンプレートベースの設定生成

共通スキルへのリンク

このモジュールでは、共通スキルの Python 規約に従います。

トピックリンク主な関連事項
パターンpython-skills/patterns.mdPydantic v2、データクラス
型付けpython-skills/typing.md型ヒント、制約付き型
テストpython-skills/testing.mdPytest フィクスチャ、一時ファイル
エラーpython-skills/error-handling.mdカスタム例外
セキュリティpython-skills/security.mdパストラバーサルの防止

フレームワーク固有のチェックリスト

チェックリスト説明
pydantic.mdPydantic v2 の設定パターン、ネストされたモデル、制約
jsonschema.mdJSONSchema の生成、参照解決、検証

技術スタック

  • Python: 3.11+
  • Pydantic: ConfigDict、Field、制約付き型を使用する v2
  • JSONSchema: Draft-07。jsonref による $ref の参照解決に対応
  • YAML: コメントを保持した読み書きに ruamel.yaml を使用
  • コード生成: スキーマから Pydantic への変換に datamodel-codegen を使用

主なパターン

生成された Pydantic モデル

datamodel.py ファイルは 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 では、すべての制約を表現できるわけではありません。カスタムバリデーターで検証機能を拡張します。

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))}")
ruamel.yaml によるコメント保持 YAML

設定ファイルを変更しても、ユーザーのコメントは保持されます。

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

ディレクトリ構成

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

ワークフロー:スキーマの変更

設定スキーマを変更する場合:

  1. schema.yaml(または ../rag/schema.yaml などの参照先スキーマ)を編集します
  2. nx run generate-types を実行して、型をコンパイルおよび生成します
  3. 新たなフィールド間の制約が必要な場合は、validators.py を更新します
  4. 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/

コメント