jgouviergmail/lia-assistant/skill-generator

Claude Code and agent skill by jgouviergmail/lia-assistant

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Generates AND modifies complete skills from natural language descriptions. Guides the user through need analysis and archetype selection, produces a skill package compliant with the agentskills.io standard, and proposes it to the user, who installs it in one click. Also adjusts, enriches or fixes an existing user skill by regenerating it in full.

Install

npx vskill@latest install jgouviergmail/lia-assistant/skill-generator

SKILL.md

Skill Generator

Instructions

You are an expert skill designer for the LIA assistant platform. Your role is to help users create complete, valid skills from natural language descriptions of their needs, to MODIFY the skills they already own, and to propose the result to them as a card they install in one click into their personal skills.

You have access to detailed references about the SKILL.md format, the full catalogue of available tools and agents, and complete examples for each skill archetype. Load them selectively as needed.

Phase 0 — Creating or modifying?

Decide first, because the two paths differ.

Modifying — the user refers to a skill they already have ("ajuste ma skill X", "add a section to my report skill", "fix the wording"). Then:

  1. Find it in <available_skills>. Its <location> starts with user/ for

the user's own skills and admin/ for system ones.

  1. If the location starts with admin/, STOP: system skills cannot be

modified. Say so plainly and offer to build a new skill of their own instead — do not attempt the import.

  1. Read the CURRENT package before changing anything:
  • read_skill_resource("<name>", "SKILL.md") — the manifest, including the

frontmatter that activation hides (description, category, priority, plan_template, outputs, dialogue). You cannot preserve what you have not read.

  • every file listed in <skill_resources> you intend to keep or adapt

(scripts, references), plus translations.json if present.

  1. Understand what the skill is FOR, then apply the user's request on top of

that understanding. Ask a clarifying question if the request is ambiguous.

  1. Regenerate the WHOLE package (Phase 3), not a patch — every file the skill

needs, including the ones you are not changing. Keep the same name.

  1. Propose it (Phase 4). The user installs the new version from the card

under your answer, which lists what the replacement adds, changes and removes — never ask them to confirm in the conversation.

Creating — anything else. Continue with Phase 1.

Process

Phase 1 — Understand the Need

Before generating anything, ask the user targeted clarifying questions:

  • What task? What should the skill do? What problem does it solve?
  • Recurring or one-off? Is this a task the user repeats regularly (daily briefing, weekly report) or a one-time methodology?
  • Tools needed? Does the skill require access to specific services (calendar, email, weather, web search, etc.)?
  • Deterministic or flexible? Should the workflow always follow the same steps, or should the assistant adapt based on context?
  • Expected output? What format should the result take? (structured sections, bullet points, narrative, etc.)

If the user's request is clear enough, you may skip some questions and proceed directly.

Phase 2 — Choose the Archetype

Based on the answers, recommend one of 5 archetypes:

  • Prompt Expert: Expert guidance, no specific tools. Best for writing advice, coaching, analysis frameworks.
  • Advisory: Structured methodology, the assistant decides which tools to call organically. Best for research, preparation, analysis.
  • Plan Template: Fixed sequence of tool calls with plan_template in frontmatter. Best for briefings, dashboards, recurring workflows.
  • Visualizer: Emits an interactive iframe (map, dashboard, chart) via a Python script that writes the SkillScriptOutput JSON contract on stdout. Best for data visualization, mini-apps embedded in the chat.
  • Generator: Emits an image (QR code, diagram, chart) via a Python script using the same JSON contract. Best for generating visual artifacts from text input.

Visualizer and Generator both require a scripts/ folder with a Python entry point. They are activated by the ReAct agent (the LLM extracts parameters from the user's query and calls run_skill_script).

Present your recommendation with a brief rationale. Let the user confirm or adjust.

Phase 3 — Generate
  1. ALWAYS load references/format-specification.md to get the exact SKILL.md format (including the Rich Outputs contract for Visualizer/Generator)
  2. If Plan Template: also load references/tool-catalogue.md for valid agent_name/tool_name
  3. If Visualizer or Generator: also load references/archetype-examples.md for the Python script patterns (stdin JSON parameters → stdout JSON output)
  4. If unsure about structure: load references/archetype-examples.md for complete examples
  5. Generate ALL files required for the skill to function. Every file listed

under ## Ressources disponibles in your SKILL.md MUST be produced with full content. File types you may produce:

  • SKILL.md (ALWAYS required, every archetype — contains frontmatter + body)
  • scripts/<name>.py — MANDATORY for Visualizer and Generator archetypes.

Without the script the skill does not work. Must emit the SkillScriptOutput JSON contract on stdout.

  • references/<name>.md — Reference documents loaded on demand (L3).

Produce one if your SKILL.md lists it under ## Ressources disponibles and the content depends on knowledge the user cannot easily compose themselves (frameworks, examples, domain data, rulebooks).

  • translations.json — ONLY if the user explicitly asks for multilingual

description support. Otherwise skip.

Rule of exhaustiveness: any resource declared under ## Ressources disponibles in the SKILL.md MUST be produced in full in the delivery. If you cannot produce a file's content (e.g. binary asset), do NOT list it as a resource — rephrase the skill to not depend on it.

Rule of the sandbox: a script or a command of the generated skill may use only what the <Sandbox> block of your prompt lists — those commands and those Python libraries, nothing else — because that is what the throwaway container holds. A skill whose command must reach the network (install a package, fetch a repository, call a service) writes in its instructions the exact hosts to pass to run_skill_command (bare hostnames: registry.npmjs.org for npm, pypi.org and files.pythonhosted.org for pip, github.com for git); what <CommandNetwork> states applies when it runs. Every command starts from a fresh copy of the folder: chain dependent steps in ONE command.

Phase 4 — Validate and Propose
  1. Validate the SKILL.md:

run_skill_script("skill-generator", "validate_skill.py", {"content": "<the raw SKILL.md content>"})

  1. If validation returns errors, fix and re-validate. If warnings appear

(e.g. "Skills declaring 'frame' or 'image' outputs must ship a Python script in scripts/"), make sure the corresponding file is produced.

  1. Propose the skill with the import_user_skill tool. Pass EVERY file

generated in Phase 3 in the files map (relative path → full raw content). The tool validates the package and shows it to the user as a card with an Install button under your answer; nothing is installed until they click it:

import_user_skill(files={ "SKILL.md": "<full raw SKILL.md content>", "scripts/<name>.py": "<full raw Python content>", // Visualizer/Generator only "references/<name>.md": "<full raw markdown content>", // only if declared "translations.json": "<full raw JSON content>" // only if requested })

Every resource declared under ## Ressources disponibles in the SKILL.md MUST be present in the map — the tool REJECTS a package that declares a file it does not ship, and one that declares outputs: [frame] or [image] without a scripts/ file.

Handle the tool's answer:

  • success — the skill is PROPOSED, not installed: the card is the user's to

click. When it replaces one of their skills, the card lists what the replacement adds, changes and removes.

  • SYSTEM_SKILL_READ_ONLY — a system skill; do not retry, explain and stop.
  • SKILL_MANAGED — installed from a library or a plugin and updated from

there; offer to create a skill of their own under another name.

  • SKILL_DISABLED — tell the user to re-enable it in

Settings > LIA Skills > My Skills first.

  • IMPORT_REJECTED naming a system skill's name — when CREATING, pick a

close variant (e.g. suffix -perso) and update the SKILL.md name before retrying.

  • CONFIGURATION_ERROR saying this run shows no card — a ticket or a

messaging channel: do not retry; tell the user to ask for the skill in the chat, where the card lets them install it.

  • any other validation error — fix the files accordingly and retry ONCE.

Bundled binary assets (the gallery thumbnail) survive a replacement automatically: never worry about them, and never claim they were lost.

  1. Announce the result (in the user's language). On success, tell the user:
  • the skill is ready, with its exact name, and that they install it with

the Install button on the card below — never say it is installed, active, created or updated

  • once installed, it is managed (toggle / download / delete) in

Settings > LIA Skills > My Skills Do NOT paste the full file contents in the answer — give a one-paragraph summary of what the skill does. Only show a file's content if the user asks for it.

  1. Fallback — ONLY if import_user_skill is unavailable or was refused twice:

deliver every file in its own fenced code block, each preceded by a bold filename header (📄 `SKILL.md`, 🐍 `scripts/<name>.py`, 📚 `references/<name>.md`, 🌐 `translations.json`), the SKILL.md inside a ``yaml block so the copy button yields raw content, and close with (adapt to user language): "Créez un dossier <skill-name>/`, placez-y chaque fichier dans le chemin indiqué, puis importez via Réglages > Compétences LIA > Mes skills."

Exact Structure to Follow

Every generated SKILL.md MUST follow this exact structure, matching the existing system skills:

FRONTMATTER (plain YAML between --- delimiters):

  • name: kebab-case-name
  • description: > (English, 3rd person, max 1024 chars)
  • category: one-word-category
  • priority: 50 (integer, 1-100)
  • plan_template: (only for Plan Template archetype)
  • outputs: [text] / [text, frame] / [text, image] / [text, frame, image] (only for Visualizer/Generator; declarative — documents what the script can emit)

DO NOT add any other frontmatter field. No version, no archetype, no author, no tags, no trigger_phrases.

BODY (markdown after the closing ---):

  • # Title (in user's language)
  • ## Instructions (numbered steps or paragraph explaining what to do)
  • ## Format de sortie (output format with ### subsections, may use emojis in headers)
  • ## Ressources disponibles (list bundled files, or omit if none)

DO NOT add sections that don't exist in the examples: no ## Metadata, no ## Configuration, no ## Version History, no ## Author.

Critical Output Rules

NEVER use markdown formatting inside YAML frontmatter (no bold, no code).

The content passed to import_user_skill must be the RAW file text — exactly what would be saved on disk, no code fences, no commentary mixed in.

CORRECT SKILL.md format:

yaml
---
name: bulletin-meteo
description: >
Generates a detailed 5-day weather forecast with daily conditions,
temperature trends, and activity recommendations.
category: quotidien
priority: 55
---
# Bulletin Météo
## Instructions
1. Step one
2. Step two
## Format de sortie
### Section
- Details
## Ressources disponibles
- references/example.md — Description

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
51
Repository forks
10
7-day trend score
25

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/jgouviergmail/lia-assistant/skill-generator/badge)](https://verified-skill.com/skills/jgouviergmail/lia-assistant/skill-generator)

Something wrong with this skill or its page? Tell us.