{
  "schemaVersion": "1.0",
  "item": {
    "slug": "skill-factory",
    "name": "Skill Factory",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/jeremysommerfeld8910-cpu/skill-factory",
    "canonicalUrl": "https://clawhub.ai/jeremysommerfeld8910-cpu/skill-factory",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/skill-factory",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=skill-factory",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "evals/evals.json",
      "evals/history.json",
      "evals/runs/20260222T174653.json",
      "references/patterns.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/skill-factory"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/skill-factory",
    "agentPageUrl": "https://openagent3.xyz/skills/skill-factory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/skill-factory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/skill-factory/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Skill Creator",
        "body": "Build, refine, and publish OpenClaw skills. Supports six modes."
      },
      {
        "title": "Modes at a Glance",
        "body": "ModeWhen to UseOutputCreateNew skill from scratch<name>/SKILL.md + resourcesEvalMeasure skill qualityRun report + pass/failImproveIterate an existing skillNew version with changelogBenchmarkCompare two skill versionsWinner + delta analysisAnalyzeExtract reusable patternspatterns.md reportSynthesizeBuild skill from patternsScaffolded SKILL.md"
      },
      {
        "title": "Mode 1: Create",
        "body": "Build a skill from scratch in 6 steps."
      },
      {
        "title": "Step 1 — Understand",
        "body": "Clarify before writing a single line:\n\nWhat does this skill do that no existing skill does?\nWho triggers it and when? (the description field drives triggering)\nWhat CLI tools, APIs, or files does it need?\nWhat's the output format?\n\nRun scripts/analyze_patterns.py --query \"<skill concept>\" to see if relevant patterns already exist."
      },
      {
        "title": "Step 2 — Plan",
        "body": "Write a one-paragraph spec covering: trigger conditions, happy path, error cases, output format. Confirm with user if uncertain."
      },
      {
        "title": "Step 3 — Init",
        "body": "Scripts are bundled in scripts/ — no external path needed:\n\n# From your workspace skills directory:\npython3 $(openclaw skills info skill-creator --json 2>/dev/null | python3 -c \"import json,sys; print(json.load(sys.stdin).get('path',''))\")/scripts/init_skill.py \\\n  <skill-name> \\\n  --path ~/.openclaw/workspace/skills/ \\\n  --resources scripts,references \\\n  --examples\n\nOr locate the skill dir and use relative path:\n\nSKILL_DIR=$(dirname $(find ~/.openclaw/workspace/skills ~/.nvm -name \"init_skill.py\" 2>/dev/null | head -1))\npython3 \"$SKILL_DIR/init_skill.py\" <skill-name> --path ~/.openclaw/workspace/skills/ --resources scripts,references\n\nThis creates:\n\n<skill-name>/\n  SKILL.md          # Edit this\n  scripts/          # Helper scripts\n  references/       # Reference docs, cheat sheets\n  _meta.json        # Auto-populated on publish"
      },
      {
        "title": "Step 4 — Write SKILL.md",
        "body": "Frontmatter rules:\n\n---\nname: my-skill-name          # lowercase-hyphen, max 64 chars\ndescription: \"One sentence: what it does AND when to use it. Include trigger phrases.\"\n---\n\nBody structure:\n\n# Skill Title\n\nBrief one-liner.\n\n## Quick Start\n[Most common usage — 3-5 lines max]\n\n## Commands / Recipes\n[Concrete examples with real output]\n\n## Reference\n[Full option tables, edge cases, advanced usage]\n\nProgressive disclosure rules:\n\nFrontmatter: always loaded (~100 words) — make it count\nBody: loaded on trigger (<500 lines) — stay under limit\nBundled resources: loaded on demand — put verbosity here"
      },
      {
        "title": "Step 5 — Package",
        "body": "# package_skill.py is bundled in this skill's scripts/ directory:\nSKILL_SCRIPTS=\"$(dirname \"$(find ~/.openclaw/workspace/skills/skill-creator ~/.nvm -name \"package_skill.py\" 2>/dev/null | head -1)\")\"\npython3 \"$SKILL_SCRIPTS/package_skill.py\" ~/.openclaw/workspace/skills/<skill-name>\n\nValidates structure, outputs <skill-name>.skill zip."
      },
      {
        "title": "Step 6 — Iterate",
        "body": "Run evals (Mode 2) → identify failures → update SKILL.md → re-package → repeat."
      },
      {
        "title": "Mode 2: Eval",
        "body": "Measure skill quality against defined expectations."
      },
      {
        "title": "Setup",
        "body": "Create evals/evals.json:\n\n[\n  {\n    \"id\": \"basic-create\",\n    \"prompt\": \"Create a skill that sends a Slack message\",\n    \"expected_output\": \"SKILL.md with slack-notifier name and working command\",\n    \"assertions\": [\n      \"contains SKILL.md frontmatter with name and description\",\n      \"contains at least one bash command example\",\n      \"description includes trigger phrases\"\n    ]\n  }\n]"
      },
      {
        "title": "Eval Run",
        "body": "For each eval case:\n\nExecute the prompt using current skill\nGrade against assertions (pass/fail per assertion)\nLog result to evals/runs/<timestamp>.json"
      },
      {
        "title": "Run Report Format",
        "body": "{\n  \"skill\": \"skill-creator\",\n  \"version\": \"1.0.0\",\n  \"timestamp\": \"2026-02-22T03:00:00Z\",\n  \"pass_rate\": 0.85,\n  \"cases\": [\n    { \"id\": \"basic-create\", \"passed\": true, \"assertions_passed\": 3, \"assertions_total\": 3 }\n  ]\n}"
      },
      {
        "title": "Mode 3: Improve",
        "body": "Iterate on an existing skill using eval feedback."
      },
      {
        "title": "Improvement Loop",
        "body": "1. Run evals → identify failing assertions\n2. Read current SKILL.md\n3. Draft changes targeting failures\n4. Write new version (increment semver in _meta.json)\n5. Re-run evals → confirm pass rate improved\n6. Update history.json"
      },
      {
        "title": "history.json",
        "body": "Track all versions at evals/history.json:\n\n[\n  {\n    \"version\": \"1.0.0\",\n    \"parent\": null,\n    \"expectation_pass_rate\": 0.70,\n    \"is_current_best\": false,\n    \"notes\": \"Initial version\"\n  },\n  {\n    \"version\": \"1.1.0\",\n    \"parent\": \"1.0.0\",\n    \"expectation_pass_rate\": 0.85,\n    \"is_current_best\": true,\n    \"notes\": \"Improved trigger description, added Synthesize mode\"\n  }\n]"
      },
      {
        "title": "Mode 4: Benchmark",
        "body": "Blind A/B comparison of two skill versions."
      },
      {
        "title": "Process",
        "body": "Run identical eval suite against version A and version B\nCollect raw outputs without labels\nCompare blind (no version labels) → pick winner per case\nReveal versions, compute delta\nRecommend: keep A, adopt B, or cherry-pick specific cases"
      },
      {
        "title": "Benchmark Output",
        "body": "Version A: 1.0.0  pass_rate=0.70\nVersion B: 1.1.0  pass_rate=0.85\nDelta: +0.15 (B wins)\nRegressions: 0\nRecommendation: Adopt B"
      },
      {
        "title": "Mode 5: Analyze Patterns",
        "body": "Scan installed skills to extract reusable building blocks.\n\npython3 ~/.openclaw/workspace/skills/skill-creator/scripts/analyze_patterns.py \\\n  --scan-dirs ~/.openclaw/workspace/skills/,~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/skills/ \\\n  --output ~/.openclaw/workspace/skills/skill-creator/references/patterns.md\n\nWhat it extracts:\n\nTrigger phrases — common description keywords that activate skills\nTool patterns — CLI tools, APIs, Docker patterns used across skills\nOutput formats — JSON schemas, markdown templates, log formats\nStructural patterns — how skills organize commands/recipes\nError handling patterns — retry logic, circuit breakers, fallbacks\n\nSee references/patterns.md for the current extracted pattern library."
      },
      {
        "title": "Mode 6: Synthesize from Patterns",
        "body": "Build a new skill scaffold by combining patterns from the library."
      },
      {
        "title": "Usage",
        "body": "When asked to create a skill in a domain that resembles existing skills:\n\nRun Analyze Patterns first\nQuery references/patterns.md for relevant patterns\nCompose a SKILL.md that combines:\n\nBest trigger phrases from similar skills\nRelevant tool/API patterns\nAppropriate output format\nError handling from most robust similar skill"
      },
      {
        "title": "Example",
        "body": "\"Create a skill for Twitter scraping\":\n\nPull trigger phrases from reddit-scraper\nPull CDP/browser patterns from fast-browser-use\nPull output format (JSON array) from crypto-market-data\nSynthesize into twitter-scraper/SKILL.md"
      },
      {
        "title": "Skill Anatomy Quick Reference",
        "body": "<skill-name>/\n  SKILL.md           # Required: frontmatter + body\n  scripts/           # Helper Python/bash scripts\n  references/        # Cheat sheets, API docs, schemas\n  assets/            # Images, templates\n  evals/\n    evals.json       # Test cases\n    runs/            # Eval run results\n    history.json     # Version history\n  _meta.json         # Publishing metadata\n\n_meta.json template:\n\n{\n  \"ownerId\": \"\",\n  \"slug\": \"skill-name\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": null\n}"
      },
      {
        "title": "Publishing to OpenClaw Community",
        "body": "Registry: clawhub.com — use the clawhub CLI (already installed).\n\n# 1. Login (opens browser once)\nclawhub login\n\n# 2. Publish directly from skill folder — no .skill zip needed\nclawhub publish ~/.openclaw/workspace/skills/<skill-name> \\\n  --version 1.0.0 \\\n  --changelog \"Initial release\"\n\n# 3. Or sync all workspace skills at once:\nclawhub sync --workdir ~/.openclaw/workspace --dir skills\n\nEnsure _meta.json has correct slug and version\nRun full eval suite — pass rate must be ≥ 0.80\nclawhub login (one-time browser auth)\nclawhub publish <skill-folder>\nVerify at clawhub.com/skills/<slug>\n\nQuality bar for publishing:\n\nDescription triggers correctly (test with 3+ natural phrasings)\n At least 3 concrete command examples with real output\n Error cases documented\n Eval pass rate ≥ 0.80\n _meta.json complete"
      }
    ],
    "body": "Skill Creator\n\nBuild, refine, and publish OpenClaw skills. Supports six modes.\n\nModes at a Glance\nMode\tWhen to Use\tOutput\nCreate\tNew skill from scratch\t<name>/SKILL.md + resources\nEval\tMeasure skill quality\tRun report + pass/fail\nImprove\tIterate an existing skill\tNew version with changelog\nBenchmark\tCompare two skill versions\tWinner + delta analysis\nAnalyze\tExtract reusable patterns\tpatterns.md report\nSynthesize\tBuild skill from patterns\tScaffolded SKILL.md\nMode 1: Create\n\nBuild a skill from scratch in 6 steps.\n\nStep 1 — Understand\n\nClarify before writing a single line:\n\nWhat does this skill do that no existing skill does?\nWho triggers it and when? (the description field drives triggering)\nWhat CLI tools, APIs, or files does it need?\nWhat's the output format?\n\nRun scripts/analyze_patterns.py --query \"<skill concept>\" to see if relevant patterns already exist.\n\nStep 2 — Plan\n\nWrite a one-paragraph spec covering: trigger conditions, happy path, error cases, output format. Confirm with user if uncertain.\n\nStep 3 — Init\n\nScripts are bundled in scripts/ — no external path needed:\n\n# From your workspace skills directory:\npython3 $(openclaw skills info skill-creator --json 2>/dev/null | python3 -c \"import json,sys; print(json.load(sys.stdin).get('path',''))\")/scripts/init_skill.py \\\n  <skill-name> \\\n  --path ~/.openclaw/workspace/skills/ \\\n  --resources scripts,references \\\n  --examples\n\n\nOr locate the skill dir and use relative path:\n\nSKILL_DIR=$(dirname $(find ~/.openclaw/workspace/skills ~/.nvm -name \"init_skill.py\" 2>/dev/null | head -1))\npython3 \"$SKILL_DIR/init_skill.py\" <skill-name> --path ~/.openclaw/workspace/skills/ --resources scripts,references\n\n\nThis creates:\n\n<skill-name>/\n  SKILL.md          # Edit this\n  scripts/          # Helper scripts\n  references/       # Reference docs, cheat sheets\n  _meta.json        # Auto-populated on publish\n\nStep 4 — Write SKILL.md\n\nFrontmatter rules:\n\n---\nname: my-skill-name          # lowercase-hyphen, max 64 chars\ndescription: \"One sentence: what it does AND when to use it. Include trigger phrases.\"\n---\n\n\nBody structure:\n\n# Skill Title\n\nBrief one-liner.\n\n## Quick Start\n[Most common usage — 3-5 lines max]\n\n## Commands / Recipes\n[Concrete examples with real output]\n\n## Reference\n[Full option tables, edge cases, advanced usage]\n\n\nProgressive disclosure rules:\n\nFrontmatter: always loaded (~100 words) — make it count\nBody: loaded on trigger (<500 lines) — stay under limit\nBundled resources: loaded on demand — put verbosity here\nStep 5 — Package\n# package_skill.py is bundled in this skill's scripts/ directory:\nSKILL_SCRIPTS=\"$(dirname \"$(find ~/.openclaw/workspace/skills/skill-creator ~/.nvm -name \"package_skill.py\" 2>/dev/null | head -1)\")\"\npython3 \"$SKILL_SCRIPTS/package_skill.py\" ~/.openclaw/workspace/skills/<skill-name>\n\n\nValidates structure, outputs <skill-name>.skill zip.\n\nStep 6 — Iterate\n\nRun evals (Mode 2) → identify failures → update SKILL.md → re-package → repeat.\n\nMode 2: Eval\n\nMeasure skill quality against defined expectations.\n\nSetup\n\nCreate evals/evals.json:\n\n[\n  {\n    \"id\": \"basic-create\",\n    \"prompt\": \"Create a skill that sends a Slack message\",\n    \"expected_output\": \"SKILL.md with slack-notifier name and working command\",\n    \"assertions\": [\n      \"contains SKILL.md frontmatter with name and description\",\n      \"contains at least one bash command example\",\n      \"description includes trigger phrases\"\n    ]\n  }\n]\n\nEval Run\n\nFor each eval case:\n\nExecute the prompt using current skill\nGrade against assertions (pass/fail per assertion)\nLog result to evals/runs/<timestamp>.json\nRun Report Format\n{\n  \"skill\": \"skill-creator\",\n  \"version\": \"1.0.0\",\n  \"timestamp\": \"2026-02-22T03:00:00Z\",\n  \"pass_rate\": 0.85,\n  \"cases\": [\n    { \"id\": \"basic-create\", \"passed\": true, \"assertions_passed\": 3, \"assertions_total\": 3 }\n  ]\n}\n\nMode 3: Improve\n\nIterate on an existing skill using eval feedback.\n\nImprovement Loop\n1. Run evals → identify failing assertions\n2. Read current SKILL.md\n3. Draft changes targeting failures\n4. Write new version (increment semver in _meta.json)\n5. Re-run evals → confirm pass rate improved\n6. Update history.json\n\nhistory.json\n\nTrack all versions at evals/history.json:\n\n[\n  {\n    \"version\": \"1.0.0\",\n    \"parent\": null,\n    \"expectation_pass_rate\": 0.70,\n    \"is_current_best\": false,\n    \"notes\": \"Initial version\"\n  },\n  {\n    \"version\": \"1.1.0\",\n    \"parent\": \"1.0.0\",\n    \"expectation_pass_rate\": 0.85,\n    \"is_current_best\": true,\n    \"notes\": \"Improved trigger description, added Synthesize mode\"\n  }\n]\n\nMode 4: Benchmark\n\nBlind A/B comparison of two skill versions.\n\nProcess\nRun identical eval suite against version A and version B\nCollect raw outputs without labels\nCompare blind (no version labels) → pick winner per case\nReveal versions, compute delta\nRecommend: keep A, adopt B, or cherry-pick specific cases\nBenchmark Output\nVersion A: 1.0.0  pass_rate=0.70\nVersion B: 1.1.0  pass_rate=0.85\nDelta: +0.15 (B wins)\nRegressions: 0\nRecommendation: Adopt B\n\nMode 5: Analyze Patterns\n\nScan installed skills to extract reusable building blocks.\n\npython3 ~/.openclaw/workspace/skills/skill-creator/scripts/analyze_patterns.py \\\n  --scan-dirs ~/.openclaw/workspace/skills/,~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/skills/ \\\n  --output ~/.openclaw/workspace/skills/skill-creator/references/patterns.md\n\n\nWhat it extracts:\n\nTrigger phrases — common description keywords that activate skills\nTool patterns — CLI tools, APIs, Docker patterns used across skills\nOutput formats — JSON schemas, markdown templates, log formats\nStructural patterns — how skills organize commands/recipes\nError handling patterns — retry logic, circuit breakers, fallbacks\n\nSee references/patterns.md for the current extracted pattern library.\n\nMode 6: Synthesize from Patterns\n\nBuild a new skill scaffold by combining patterns from the library.\n\nUsage\n\nWhen asked to create a skill in a domain that resembles existing skills:\n\nRun Analyze Patterns first\nQuery references/patterns.md for relevant patterns\nCompose a SKILL.md that combines:\nBest trigger phrases from similar skills\nRelevant tool/API patterns\nAppropriate output format\nError handling from most robust similar skill\nExample\n\n\"Create a skill for Twitter scraping\":\n\nPull trigger phrases from reddit-scraper\nPull CDP/browser patterns from fast-browser-use\nPull output format (JSON array) from crypto-market-data\nSynthesize into twitter-scraper/SKILL.md\nSkill Anatomy Quick Reference\n<skill-name>/\n  SKILL.md           # Required: frontmatter + body\n  scripts/           # Helper Python/bash scripts\n  references/        # Cheat sheets, API docs, schemas\n  assets/            # Images, templates\n  evals/\n    evals.json       # Test cases\n    runs/            # Eval run results\n    history.json     # Version history\n  _meta.json         # Publishing metadata\n\n\n_meta.json template:\n\n{\n  \"ownerId\": \"\",\n  \"slug\": \"skill-name\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": null\n}\n\nPublishing to OpenClaw Community\n\nRegistry: clawhub.com — use the clawhub CLI (already installed).\n\n# 1. Login (opens browser once)\nclawhub login\n\n# 2. Publish directly from skill folder — no .skill zip needed\nclawhub publish ~/.openclaw/workspace/skills/<skill-name> \\\n  --version 1.0.0 \\\n  --changelog \"Initial release\"\n\n# 3. Or sync all workspace skills at once:\nclawhub sync --workdir ~/.openclaw/workspace --dir skills\n\nEnsure _meta.json has correct slug and version\nRun full eval suite — pass rate must be ≥ 0.80\nclawhub login (one-time browser auth)\nclawhub publish <skill-folder>\nVerify at clawhub.com/skills/<slug>\n\nQuality bar for publishing:\n\n Description triggers correctly (test with 3+ natural phrasings)\n At least 3 concrete command examples with real output\n Error cases documented\n Eval pass rate ≥ 0.80\n _meta.json complete"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/jeremysommerfeld8910-cpu/skill-factory",
    "publisherUrl": "https://clawhub.ai/jeremysommerfeld8910-cpu/skill-factory",
    "owner": "jeremysommerfeld8910-cpu",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/skill-factory",
    "downloadUrl": "https://openagent3.xyz/downloads/skill-factory",
    "agentUrl": "https://openagent3.xyz/skills/skill-factory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/skill-factory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/skill-factory/agent.md"
  }
}