Files
ComfyUI-Lora-Manager/py/services/agent/skills/enrich_hf_metadata/SKILL.md
Will Miao 63785f82b5 refactor(agent): consolidate skill definition into single SKILL.md with YAML frontmatter
Merge skill.yaml (metadata) and prompt.md (prompt template) into a
single SKILL.md file with YAML frontmatter, matching the agent-skill
convention used by opencode and Claude Code.

- Add frontmatter parser (_parse_skill_file) to SkillRegistry
- Remove skill.yaml, prompt.md, empty skills/__init__.py
- Remove obsolete load_handler method
- Update tests for new format and cleaned-up fields
2026-07-02 21:29:02 +08:00

3.3 KiB

name, title, description, llm_required
name title description llm_required
enrich_hf_metadata Enrich Metadata from HuggingFace Parse the HuggingFace model card via LLM to extract description, trigger words, base model, tags, and preview image URL. true

You are an expert assistant for AI image generation models. Your task is to extract structured metadata from a HuggingFace model card (README.md).

Model Information

  • Repository: {{hf_url}}
  • Model file path: {{model_path}}
  • Repository ID: {{repo}}

Current Metadata (may be incomplete)

{{current_metadata}}

Available Base Models

The following base models are currently valid in this system: {{base_models}}

HuggingFace README Content

{{readme_content}}

Extraction Instructions

Extract the following information from the README content above:

base_model

The base model this LoRA/checkpoint was trained on. Use EXACTLY one of the names from the Available Base Models list above. Do not invent new names or use aliases.

Check the YAML frontmatter (between --- markers) for base_model: first, then look at the description text and safetensors metadata. If you cannot determine it, return an empty string.

trigger_words

The trigger words or activation prompts needed to use this LoRA. Look for:

  • instance_prompt: in the YAML frontmatter
  • Phrases like "trigger word:", "trigger:", "use this prompt:", "activation prompt:"
  • Example prompts at the start (usually the first word or phrase before any description) Return as an array of strings. If none found, return an empty array.

description

A concise 1-2 sentence summary of what this model does. Extract from the "Model description" section or the first paragraph. Return empty string if the README is too minimal.

tags

3-8 relevant tags for categorizing this model. Extract from:

  • The YAML frontmatter tags: list (often contains excellent categorization tags)
  • The model type (e.g. "lora", "checkpoint", "flux", "sdxl")
  • The style/subject (e.g. "anime", "photorealistic", "style", "character") All lowercase, no spaces. Return empty array if none found.

preview_url

The URL of the most suitable preview image from the README. Look for image tags (e.g. ![alt](url)) and the YAML frontmatter widget: section (which often has output.url fields). Choose the first image that appears to be a generation example (not a logo or diagram). Construct the absolute URL as https://huggingface.co/{{repo}}/resolve/main/{filename}. If no suitable image is found, return an empty string.

confidence

Your confidence level in the extracted data:

  • "high" — most fields were explicitly stated in the README
  • "medium" — some fields were inferred from context
  • "low" — most fields are guesses based on limited information

Output Format

Return ONLY a JSON object with exactly these fields (no markdown fences, no extra text):

{
  "model_path": "{{model_path}}",
  "base_model": "<canonical name or empty string>",
  "trigger_words": ["<word1>", "<word2>"],
  "description": "<1-2 sentence summary>",
  "tags": ["<tag1>", "<tag2>"],
  "preview_url": "<image URL or empty string>",
  "confidence": "<high|medium|low>"
}

Important:

  • Only include the JSON object, no other text
  • If a field cannot be determined, use an empty string or empty array
  • Do not fabricate information not supported by the README