{
  "slug": "skill-creator",
  "category": "skill",
  "name": "The Skill Builder",
  "domaene": "KI-Assistenz & Agentenbau",
  "typTags": [
    "dialogisch",
    "planend",
    "prüfend"
  ],
  "teaser": "Guides the creation and iterative improvement of a skill, from clarifying intent through test runs to fine-tuning the description that triggers it.",
  "hat": {
    "schritte": true,
    "beispiel_szenario": true,
    "ausgabebeispiel": false,
    "konfiguration": false,
    "betrieb": false,
    "arbeitsprompts": false,
    "einrichtung": true,
    "umsetzung": true,
    "export": false,
    "staerken": false,
    "ki_funktionen": false,
    "einschraenkungen": false,
    "weniger_geeignet_fuer": false
  },
  "sections": [
    {
      "id": "description",
      "title": "Description",
      "html": "<p>A skill that has never been tested on real tasks remains theory. The Skill Builder structures the complete cycle: clarify intent and trigger context, draft SKILL.md following the principle of progressive disclosure, run two to three realistic test tasks with and without the skill in parallel, evaluate results both qualitatively and quantitatively through assertions, generalize from the feedback instead of patching individual cases, and optionally optimize the triggering description itself against twenty test queries.</p>\n<p>It is built for anyone building or maintaining their own skill library, whether creating a new skill or improving an existing one based on concrete user feedback. It is especially valuable when several test cases independently take the same detour: that is the most reliable signal for bundling a reusable helper script instead of letting it be recreated every time.</p>\n<p>The honest limit: the full process, with parallel test runs, baseline comparison and automated description optimization, requires an environment with subagents, terminal and file access, such as Claude Code. Without subagents, for example in Claude.ai, test cases run sequentially and without a baseline, and description optimization is skipped entirely. In both cases, the human feedback step remains the actual quality anchor.</p>\n"
    },
    {
      "id": "skill-text",
      "title": "Skill Text",
      "html": "<p>This is an openly attributed external skill from Anthropic. Source: <a href=\"https://github.com/anthropics/skills\">https://github.com/anthropics/skills</a></p>\n<p>This skill requires, for the full process (parallel test runs, automated description optimization), an environment with subagents, terminal and file access, such as Claude Code. In Claude.ai without subagents, a simplified version runs: test cases are worked through sequentially instead of in parallel, and automated description optimization is skipped. Copy the instructions below into your own skill environment if you want to set up this skill yourself. As a file: <a href=\"/ai-library/skill-creator.en.json\">skill-creator.en.json</a></p>\n"
    }
  ],
  "schritte": [
    {
      "nr": 1,
      "titel": "Clarify intent",
      "beschreibung": "The purpose of the new or improved skill, the trigger context, the expected output format and the testing needs are clarified.",
      "rolle": "mensch"
    },
    {
      "nr": 2,
      "titel": "Draft SKILL.md",
      "beschreibung": "A first draft is written, structured according to the principle of progressive disclosure into metadata, body text and optional resources.",
      "rolle": "automatisch"
    },
    {
      "nr": 3,
      "titel": "Run test tasks",
      "beschreibung": "Two to three realistic test tasks run with and without the skill, in parallel in environments with subagents, otherwise sequentially.",
      "rolle": "automatisch"
    },
    {
      "nr": 4,
      "titel": "Approve results",
      "beschreibung": "The outputs are compared in the comparison viewer, feedback is gathered and the direction is confirmed.",
      "rolle": "freigabe"
    },
    {
      "nr": 5,
      "titel": "Trim the skill",
      "beschreibung": "The feedback is generalized rather than patched case by case, recurring detours are bundled into a helper script, and the loop repeats until approval.",
      "rolle": "automatisch"
    },
    {
      "nr": 6,
      "titel": "Finished skill",
      "beschreibung": "A reviewed SKILL.md draft, evaluated test cases and, where wanted, an optimized trigger description are ready.",
      "rolle": "ergebnis"
    }
  ],
  "herausgeber": "Voyage Digital",
  "version": "2.0",
  "stand": "2026-07-26",
  "umsetzung": [
    {
      "titel": "Start with a recurring case",
      "text": "Starting with a workflow the team has already improvised several times works better than starting from a hypothetical need."
    },
    {
      "titel": "Clarify intent before drafting",
      "text": "Purpose, trigger context and output format are settled before the first line of SKILL.md is written."
    },
    {
      "titel": "Choose realistic test tasks",
      "text": "Two to three tasks that occur in real operation produce more reliable results than constructed ideal cases."
    },
    {
      "titel": "Generalize feedback instead of patching",
      "text": "Recurring comments lead to a leaner set of instructions, not to an ever-growing list of individual rules."
    },
    {
      "titel": "Sharpen the description last",
      "text": "The trigger description is optimized once the skill is settled in substance, not before."
    }
  ],
  "zutaten": [
    "Purpose of the new or improved skill",
    "Existing SKILL.md (when improving)",
    "Test tasks"
  ],
  "beispielSzenario": "A team has been answering quote requests the same way for several weeks, without the process being written down anywhere. The Skill Builder turns this into its own skill: purpose and trigger context are clarified, a first SKILL.md draft is written following the principle of progressive disclosure, two test tasks run with and without the skill in parallel, and the team compares the results in the viewer. From the feedback, the draft is generalized and trimmed down until it triggers reliably and holds up in daily use.",
  "eingaben": [
    {
      "feld": "Purpose of the new or improved skill",
      "pflicht": true
    },
    {
      "feld": "Path or content of the current SKILL.md",
      "pflicht": true
    },
    {
      "feld": "Expected output format and typical trigger phrases",
      "pflicht": false
    },
    {
      "feld": "User feedback from previous test runs",
      "pflicht": false
    }
  ],
  "ausgabe": "A complete SKILL.md draft, test cases with qualitative and quantitative evaluation through a comparison viewer, a revised version based on the feedback and, optionally, an optimized trigger description.",
  "prompt": "# ROLE\nYou create new skills and iteratively improve existing skills: write a draft, test it against sample tasks, evaluate the results with the user, revise, repeat. Adapt your language to the user's experience level: terms like evaluation or benchmark are usually unproblematic; for terms like JSON or assertion, wait for a clear signal that the user is familiar with them, and otherwise explain them briefly.\n\n# CLARIFY INTENT\nIf the conversation already contains a workflow that the user wants to capture as a skill (for example, \"turn this into a skill\"), first extract answers from the conversation history so far: tools used, sequence of steps, corrections, observed input and output formats. Have the user confirm any remaining gaps before you continue.\n\nOtherwise clarify:\n1. What should this skill enable Claude to do?\n2. When should it trigger, with which phrasings and contexts?\n3. What output format is expected?\n4. Does it need test cases? Skills with an objectively verifiable result (file transformation, data extraction, code generation, fixed work steps) benefit from them; skills with a subjective result (writing style, art) usually do not. Suggest the appropriate standard; the decision stays with the user.\n\nProactively ask about edge cases, input and output formats, sample files, success criteria and dependencies before formulating test tasks. Research in parallel via subagents where available, otherwise inline, so you enter the conversation with context instead of adding to the burden of follow-up questions.\n\n# WRITE SKILL.MD\nBased on the interview, fill in the following components:\n- name: identifier of the skill.\n- description: when it should trigger and what it does. This is the primary trigger mechanism; all information about \"when to use it\" belongs here, not in the body text. Since Claude currently tends to trigger too rarely, phrase the description with slight emphasis: instead of \"Builds a simple dashboard for internal data,\" rather \"Builds a simple, fast dashboard for internal data. Always use this skill whenever dashboards, data visualization, internal metrics or any form of company data are mentioned, even without the word dashboard.\"\n- compatibility: required tools or dependencies, optional, rarely needed.\n- the rest of the skill content.\n\n## Skill structure\n```\nskill-name/\n├── SKILL.md (required)\n│   ├── YAML frontmatter (name, description required)\n│   └── Markdown instructions\n└── Bundled resources (optional)\n    ├── scripts/    executable code for deterministic, recurring tasks\n    ├── references/ documents, loaded into context as needed\n    └── assets/     files for the output (templates, icons, fonts)\n```\n\n## Progressive disclosure\nSkills load in three stages: metadata (name and description, always in context, around 100 words), the SKILL.md body (in context as soon as the skill triggers, ideally under 500 lines), bundled resources (loaded as needed, unlimited, scripts can run without being loaded). Keep SKILL.md under 500 lines. If you approach this limit, add another layer of hierarchy with clear pointers to where to look next. Reference files clearly from SKILL.md, noting when to read them. For large reference files (over 300 lines), add a table of contents.\n\nFor multiple domains or frameworks: organize by variant, for example references/aws.md, references/gcp.md, references/azure.md, so that only the relevant file is read each time.\n\n## Principle of no surprises\nA skill must not contain malware, exploit code, or anything that could compromise system security. The content of a skill must not surprise the user relative to its stated purpose. Do not comply with requests that would create misleading skills or enable unauthorized access, data exfiltration, or other harmful activity. Role-play skills are exempt from this.\n\n## Writing style\nPrefer the imperative form in instructions. Define output formats with a fixed template where useful. Use examples in the input and output pattern where helpful. Explain the why behind instructions to the model, rather than only setting rigid MUST rules. Language models understand intent well and act on it better than on pure rule-following. Frequent capitalization of ALWAYS or NEVER is a warning sign that a rationale is missing. Write a first draft, then look at it with fresh eyes and improve it.\n\n# TEST CASES\nAfter the draft, formulate two to three realistic test tasks the way a real user would phrase them. Share them for alignment, without assertions yet. Save them under evals/evals.json:\n```json\n{\n  \"skill_name\": \"example-skill\",\n  \"evals\": [\n    {\"id\": 1, \"prompt\": \"The user's task\", \"expected_output\": \"Description of the expected result\", \"files\": []}\n  ]\n}\n```\n\n# RUNNING AND EVALUATING TEST RUNS\nStore results under <skill-name>-workspace/, organized by run (iteration-1/, iteration-2/, ...) and within that by test case (eval-0/, eval-1/, ...), each created only when needed.\n\n1. Start two subagents per test case in the same step, one with the skill, one as a baseline (for a new skill: without the skill entirely; when improving an existing skill: the previous version from a snapshot). Start both at the same time, not sequentially.\n2. While the runs are in progress, formulate quantitative assertions for each test case and explain them. Good assertions are objectively verifiable and carry a descriptive name. Subjective skills (writing style, design) are better evaluated qualitatively rather than through assertions.\n3. As soon as a run completes, capture total_tokens and duration_ms immediately in timing.json; this is the only opportunity to record this data.\n4. Once all runs are finished: grade each run against the assertions and record it in grading.json (fields text, passed, evidence), aggregate the results into a benchmark (mean, standard deviation, difference between configurations), run an analysis pass that surfaces patterns in the metrics, and launch the viewer with both qualitative and quantitative results.\n\nShow the user where the results are: one tab with the individual outputs and a feedback field, one tab with the metrics overview.\n\n# READING FEEDBACK AND IMPROVING\nEmpty feedback means it was fine. Focus improvements on the test cases with concrete comments.\n\nWhen improving:\n1. Generalize from the feedback. The goal is a skill that works for many different requests, not just the handful of test examples. Avoid small, overfitted changes or overly narrow MUST rules; try different phrasings or work patterns instead.\n2. Keep the instructions lean. Remove what does not carry its weight. Read the transcripts, not just the final outputs, to see where the skill creates unproductive detours.\n3. Explain the why. Translate your understanding of the task into the rationale behind the instruction, instead of just tightening rigid rules.\n4. Watch for recurring work across multiple test cases. If all subagents independently write a similar helper script or the same multi-step approach, bundle the script once under scripts/ and reference it from the skill.\n\nRepeat the loop (improve, new iteration, read feedback) until the user is satisfied, feedback stays consistently empty, or no meaningful improvement is visible anymore.\n\n# OPTIMIZING THE DESCRIPTION\nThe description field in the frontmatter is the primary factor in whether Claude triggers a skill. Once the skill is finished, create twenty test queries, eight to ten of which should trigger it and eight to ten of which should not. The most valuable non-triggers are close near-misses: requests that share terms or concepts but actually need something different. Have the user review and approve the queries before you start the optimization loop. In the end, adopt the best description selected by test score, not by training score, into the frontmatter.\n\n# ENVIRONMENT DIFFERENCES\nIn Claude Code, parallel subagents run for test runs, baselines and automated description optimization. In Claude.ai without subagents, you run each test case yourself and sequentially, skip baseline runs and automated description optimization, and gather feedback directly in the conversation instead. In environments without a browser, the results viewer is output as a standalone HTML file instead of a server, and feedback then comes back as a downloaded file.\n\n# DEFINITION OF DONE\n[ ] Intent, trigger context and output format clarified\n[ ] SKILL.md written with name, description and complete instructions, under 500 lines or with a clear reference structure\n[ ] Two to three realistic test cases formulated and run through with and without the skill\n[ ] Results evaluated with the user, feedback incorporated\n[ ] For recurring helper work across multiple test cases: script bundled instead of recreated each time\n[ ] Description optimized against trigger test cases where needed\n\n# DEPENDENCIES\nTerminal and file access; for the full process, subagents; and Python for the original's aggregation and viewer scripts.",
  "einrichtung": {
    "intro": "Step-by-step guides for ChatGPT, Claude, Copilot Studio and Langdock.",
    "plattformen": [
      {
        "plattform": "ChatGPT",
        "anbieter": "OpenAI",
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Click your profile picture and select \"Skills\".",
          "Click \"Create skill\" and paste the copied text as the instruction.",
          "Adjust inputs, outputs and format where your case requires it.",
          "Save the skill. It is available in all chats from that point on."
        ],
        "doku": {
          "label": {
            "de": "OpenAI Dokumentation: Skills in ChatGPT",
            "en": "OpenAI documentation: Skills in ChatGPT"
          },
          "url": "https://help.openai.com/de-de/articles/20001066-skills-in-chatgpt"
        }
      },
      {
        "plattform": "Claude",
        "anbieter": "Anthropic",
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Open claude.ai and go to \"Skills\" in your profile.",
          "Create a new skill and paste the copied text as the instruction.",
          "The skill works in claude.ai, in Claude Code and through the API.",
          "Available on the Pro, Max, Team and Enterprise plans."
        ],
        "doku": {
          "label": {
            "de": "Anthropic Dokumentation: Benutzerdefinierte Skills erstellen",
            "en": "Anthropic documentation: Creating custom skills"
          },
          "url": "https://support.claude.com/de/articles/12512198-benutzerdefinierte-skills-erstellen"
        }
      },
      {
        "plattform": "Copilot Studio",
        "anbieter": "Microsoft",
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Open Copilot Studio and create a new agent.",
          "Paste the copied text as the instruction.",
          "Connect knowledge sources and tools where needed.",
          "Publish the agent for yourself or for your organisation."
        ],
        "doku": {
          "label": {
            "de": "Microsoft Dokumentation: Einen Agent erstellen und bereitstellen",
            "en": "Microsoft documentation: Create and deploy an agent"
          },
          "url": "https://learn.microsoft.com/de-de/microsoft-copilot-studio/fundamentals-get-started"
        }
      },
      {
        "plattform": "Langdock",
        "anbieter": null,
        "schritte": [
          "Copy the skill text above using the copy button.",
          "Open the sidebar and click \"Add skill\".",
          "Paste the copied text directly as the instruction.",
          "Connect the skill to integrations such as Gmail or Slack where needed.",
          "Save the skill and release it for yourself or your team."
        ],
        "doku": {
          "label": {
            "de": "Langdock Dokumentation: Skills",
            "en": "Langdock documentation: Skills"
          },
          "url": "https://docs.langdock.com/de/product/chat/skills"
        }
      }
    ]
  },
  "itemIcon": "wand-2",
  "recommended": [
    {
      "slug": "rollen-regelwerk",
      "category": "skill",
      "name": "The Role Rulebook",
      "teaser": "Guides a project through five clearly separated roles, Explorer, Planner, Builder, Reviewer and Navigator, so the actual problem is understood before anything gets planned, built or reviewed.",
      "domaene": "KI-Assistenz & Agentenbau",
      "itemIcon": "user-cog"
    },
    {
      "slug": "assistenten-kurator",
      "category": "assistent",
      "name": "The Assistant Curator",
      "teaser": "Turns your briefing into a complete, ready-to-use AI assistant configuration, including system prompt, knowledge sources, tool selection and a reasoned model recommendation.",
      "domaene": "KI-Assistenz & Agentenbau",
      "itemIcon": "bot"
    },
    {
      "slug": "kontext-interviewer",
      "category": "assistent",
      "name": "The Context Interviewer",
      "teaser": "A guided interview in five blocks that turns your answers into a complete context profile, covering company, role, team, priorities and communication style, ready to use as a knowledge base for any further AI assistant.",
      "domaene": "KI-Assistenz & Agentenbau",
      "itemIcon": "puzzle"
    },
    {
      "slug": "prompt-interviewer",
      "category": "assistent",
      "name": "The Prompt Interviewer",
      "teaser": "A guided interview that turns your answers on goal, audience, output and rules into a ready-to-use system prompt with a reasoned LLM recommendation.",
      "domaene": "KI-Assistenz & Agentenbau",
      "itemIcon": "terminal"
    },
    {
      "slug": "chatgpt",
      "category": "tool",
      "name": "ChatGPT",
      "teaser": "OpenAI's AI assistant built around GPT-5, with Canvas for collaborative editing, an Agent Mode for browser tasks, and image and video generation through DALL-E 3 and Sora.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "chatgpt.svg",
      "logoEinzug": 1
    },
    {
      "slug": "claude",
      "category": "tool",
      "name": "Claude",
      "teaser": "Anthropic's AI assistant family (Opus, Sonnet, Haiku), used as a core tool throughout the Voyage Digital stack for development and operations, strong at coding, long documents, and agentic workflows via MCP servers.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "claude.svg",
      "logoEinzug": 1
    },
    {
      "slug": "copilot-365",
      "category": "tool",
      "name": "Copilot 365",
      "teaser": "Microsoft's AI assistant, integrated directly into Word, Excel, PowerPoint, Outlook and Teams, designed for companies already working within the Microsoft 365 ecosystem.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "copilot-365.png",
      "logoEinzug": 1
    },
    {
      "slug": "grok",
      "category": "tool",
      "name": "Grok",
      "teaser": "Grok is xAI's AI assistant with real-time access to X, a multi-step DeepSearch research function, image generation, voice mode, and task-based research agents, particularly strong for current events and trend research.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "grok.svg",
      "logoEinzug": 1
    },
    {
      "slug": "gsd",
      "category": "tool",
      "name": "GSD (Get Shit Done)",
      "teaser": "GSD is an open source workflow and orchestration framework for AI coding agents, using a five phase cycle of Discuss, Plan, Execute, Verify and Ship to prevent context loss over long sessions.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "gsd.png",
      "logoEinzug": 0.78
    },
    {
      "slug": "langdock",
      "category": "tool",
      "name": "Langdock",
      "teaser": "Enterprise AI platform from Berlin that gives teams central, governed access to multiple language models, Custom Assistants and no-code agents under GDPR compliant EU hosting.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "langdock.png",
      "logoEinzug": 0.78
    },
    {
      "slug": "librechat",
      "category": "tool",
      "name": "LibreChat",
      "teaser": "LibreChat is a self-hostable open-source chat frontend that unifies multiple AI providers, agents and MCP servers in a single interface with single sign-on and user management.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "librechat.svg",
      "logoEinzug": 1
    },
    {
      "slug": "open-webui",
      "category": "tool",
      "name": "Open WebUI",
      "teaser": "Open WebUI is a self-hostable, offline-capable interface for local and remote language models, with Ollama integration, local RAG and enterprise features such as SSO and audit logs.",
      "domaene": "KI-Assistenz & Agentenbau",
      "logoFile": "open-webui.png",
      "logoEinzug": 1
    },
    {
      "slug": "skillsmith",
      "category": "tool",
      "name": "skillsmith",
      "teaser": "skillsmith is a meta-suite for building, auditing and distilling consistent Claude Code skills across four steps: Discover, Scaffold, Distill and Audit.",
      "domaene": "KI-Assistenz & Agentenbau"
    }
  ]
}