{
  "schemaVersion": "1.0",
  "item": {
    "slug": "curated-search",
    "name": "Curated Search",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/qsmtco/curated-search",
    "canonicalUrl": "https://clawhub.ai/qsmtco/curated-search",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/curated-search",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=curated-search",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "CONTRIBUTING.md",
      "DOMAIN_GUIDE.md",
      "IMPLEMENTATION_SUMMARY_2026-02-12.md",
      "PLAN.md",
      "README.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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/curated-search"
    },
    "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/curated-search",
    "agentPageUrl": "https://openagent3.xyz/skills/curated-search/agent",
    "manifestUrl": "https://openagent3.xyz/skills/curated-search/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/curated-search/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Summary",
        "body": "Domain-restricted full-text search over a curated whitelist of technical documentation (MDN, Python docs, etc.). Provides clean, authoritative results without web spam."
      },
      {
        "title": "External Endpoints",
        "body": "This skill does not call any external network endpoints during search operations. The crawler optionally makes outbound HTTP requests during index builds (one‑time setup), but those are user‑initiated (npm run crawl) and respect the configured domain whitelist."
      },
      {
        "title": "Security & Privacy",
        "body": "Search is fully local – After the index is built, all queries run offline; no data leaves your machine.\nCrawling is optional and whitelist‑scoped – The crawler only accesses domains you explicitly list in config.yaml. It respects robots.txt and configurable delays.\nNo telemetry – No usage data is transmitted externally.\nConfiguration is read from local config.yaml and the index file in data/."
      },
      {
        "title": "Model Invocation Note",
        "body": "The curated-search.search tool is invoked only when the user explicitly calls it. It does not run autonomously. OpenClaw calls the tool handler (scripts/search.js) when the user asks to search the curated index."
      },
      {
        "title": "Trust Statement",
        "body": "By using this skill, you trust that the code operates locally and only crawls domains you approve. The skill does not send your queries or workspace data to any third party. Review the open‑source implementation before installing."
      },
      {
        "title": "Tool: curated-search.search",
        "body": "Search the curated index."
      },
      {
        "title": "Parameters",
        "body": "NameTypeRequiredDefaultDescriptionquerystringyes—Search query termslimitnumberno5Maximum results (capped by config.max_limit, typically 100)domainstringnonullFilter to specific domain (e.g., docs.python.org)min_scorenumberno0.0Minimum relevance score (0.0–1.0); filters out low-quality matchesoffsetnumberno0Pagination offset (skip first N results)"
      },
      {
        "title": "Response",
        "body": "JSON array of result objects:\n\n[\n  {\n    \"title\": \"Python Tutorial\",\n    \"url\": \"https://docs.python.org/3/tutorial/\",\n    \"snippet\": \"Python is an easy to learn, powerful programming language...\",\n    \"domain\": \"docs.python.org\",\n    \"score\": 0.87,\n    \"crawled_at\": 1707712345678\n  }\n]\n\nFields:\n\ntitle — Document title (cleaned)\nurl — Source URL (canonical)\nsnippet — Excerpt (~200 chars) from content\ndomain — Hostname of source\nscore — BM25 relevance score (higher is better; not normalized 0–1 but typically 0–1 range)\ncrawled_at — Unix timestamp when page was crawled"
      },
      {
        "title": "Example Agent Calls",
        "body": "search CuratedSearch for \"python tutorial\"\nsearch CuratedSearch for \"async await\" limit=3 domain=developer.mozilla.org\nsearch CuratedSearch for \"linux man page\" min_score=0.3"
      },
      {
        "title": "Errors",
        "body": "If an error occurs, the tool exits non-zero and prints a JSON error object to stderr, e.g.:\n\n{\n  \"error\": \"index_not_found\",\n  \"message\": \"Search index not found. The index has not been built yet.\",\n  \"suggestion\": \"Run the crawler first: npm run crawl\",\n  \"details\": { \"path\": \"data/index.json\" }\n}\n\nCommon error codes:\n\nCodeMeaningSuggested Fixconfig_missingConfiguration file not foundSpecify --config path or ensure config.yaml existsconfig_invalidYAML parsing failedCheck syntax in config.yamlconfig_missing_index_pathindex.path not setAdd index.path to configindex_not_foundIndex file missingRun npm run crawl to build indexindex_corruptedIndex file incompatible or corruptedRebuild index with npm run crawlindex_init_failedUnexpected index initialization errorCheck permissions, reinstall dependenciesmissing_queryNo query providedProvide --query argumentquery_too_longQuery exceeds 1000 charactersShorten the querylimit_exceededLimit > config.max_limitUse a smaller limitinvalid_domainDomain filter malformedUse format like docs.python.orgconflicting_flagsMutually exclusive flags used (e.g., --stats with --query)Use flags correctlystats_failedCould not retrieve index statsEnsure index is accessiblesearch_failedSearch execution threw an errorCheck query and index integrity"
      },
      {
        "title": "Configuration",
        "body": "Edit config.yaml in the skill directory. Key sections:\n\ndomains — whitelist of allowed domains (required)\nseeds — starting URLs for crawling\ncrawl — depth, delay, timeout, max_documents\ncontent — min_content_length, max_content_length\nindex — path to index files\nsearch — default_limit, max_limit, min_score\n\nSee README.md for full configuration docs."
      },
      {
        "title": "Support",
        "body": "Full documentation: README.md\nTechnical specs: specs/\nBuild plan: PLAN.md\nContributor guide: CONTRIBUTING.md\nIssues: Report on GitHub (or via OpenClaw maintainers)"
      }
    ],
    "body": "Curated Search Skill\nSummary\n\nDomain-restricted full-text search over a curated whitelist of technical documentation (MDN, Python docs, etc.). Provides clean, authoritative results without web spam.\n\nExternal Endpoints\n\nThis skill does not call any external network endpoints during search operations. The crawler optionally makes outbound HTTP requests during index builds (one‑time setup), but those are user‑initiated (npm run crawl) and respect the configured domain whitelist.\n\nSecurity & Privacy\nSearch is fully local – After the index is built, all queries run offline; no data leaves your machine.\nCrawling is optional and whitelist‑scoped – The crawler only accesses domains you explicitly list in config.yaml. It respects robots.txt and configurable delays.\nNo telemetry – No usage data is transmitted externally.\nConfiguration is read from local config.yaml and the index file in data/.\nModel Invocation Note\n\nThe curated-search.search tool is invoked only when the user explicitly calls it. It does not run autonomously. OpenClaw calls the tool handler (scripts/search.js) when the user asks to search the curated index.\n\nTrust Statement\n\nBy using this skill, you trust that the code operates locally and only crawls domains you approve. The skill does not send your queries or workspace data to any third party. Review the open‑source implementation before installing.\n\nTool: curated-search.search\n\nSearch the curated index.\n\nParameters\nName\tType\tRequired\tDefault\tDescription\nquery\tstring\tyes\t—\tSearch query terms\nlimit\tnumber\tno\t5\tMaximum results (capped by config.max_limit, typically 100)\ndomain\tstring\tno\tnull\tFilter to specific domain (e.g., docs.python.org)\nmin_score\tnumber\tno\t0.0\tMinimum relevance score (0.0–1.0); filters out low-quality matches\noffset\tnumber\tno\t0\tPagination offset (skip first N results)\nResponse\n\nJSON array of result objects:\n\n[\n  {\n    \"title\": \"Python Tutorial\",\n    \"url\": \"https://docs.python.org/3/tutorial/\",\n    \"snippet\": \"Python is an easy to learn, powerful programming language...\",\n    \"domain\": \"docs.python.org\",\n    \"score\": 0.87,\n    \"crawled_at\": 1707712345678\n  }\n]\n\n\nFields:\n\ntitle — Document title (cleaned)\nurl — Source URL (canonical)\nsnippet — Excerpt (~200 chars) from content\ndomain — Hostname of source\nscore — BM25 relevance score (higher is better; not normalized 0–1 but typically 0–1 range)\ncrawled_at — Unix timestamp when page was crawled\nExample Agent Calls\nsearch CuratedSearch for \"python tutorial\"\nsearch CuratedSearch for \"async await\" limit=3 domain=developer.mozilla.org\nsearch CuratedSearch for \"linux man page\" min_score=0.3\n\nErrors\n\nIf an error occurs, the tool exits non-zero and prints a JSON error object to stderr, e.g.:\n\n{\n  \"error\": \"index_not_found\",\n  \"message\": \"Search index not found. The index has not been built yet.\",\n  \"suggestion\": \"Run the crawler first: npm run crawl\",\n  \"details\": { \"path\": \"data/index.json\" }\n}\n\n\nCommon error codes:\n\nCode\tMeaning\tSuggested Fix\nconfig_missing\tConfiguration file not found\tSpecify --config path or ensure config.yaml exists\nconfig_invalid\tYAML parsing failed\tCheck syntax in config.yaml\nconfig_missing_index_path\tindex.path not set\tAdd index.path to config\nindex_not_found\tIndex file missing\tRun npm run crawl to build index\nindex_corrupted\tIndex file incompatible or corrupted\tRebuild index with npm run crawl\nindex_init_failed\tUnexpected index initialization error\tCheck permissions, reinstall dependencies\nmissing_query\tNo query provided\tProvide --query argument\nquery_too_long\tQuery exceeds 1000 characters\tShorten the query\nlimit_exceeded\tLimit > config.max_limit\tUse a smaller limit\ninvalid_domain\tDomain filter malformed\tUse format like docs.python.org\nconflicting_flags\tMutually exclusive flags used (e.g., --stats with --query)\tUse flags correctly\nstats_failed\tCould not retrieve index stats\tEnsure index is accessible\nsearch_failed\tSearch execution threw an error\tCheck query and index integrity\nConfiguration\n\nEdit config.yaml in the skill directory. Key sections:\n\ndomains — whitelist of allowed domains (required)\nseeds — starting URLs for crawling\ncrawl — depth, delay, timeout, max_documents\ncontent — min_content_length, max_content_length\nindex — path to index files\nsearch — default_limit, max_limit, min_score\n\nSee README.md for full configuration docs.\n\nSupport\nFull documentation: README.md\nTechnical specs: specs/\nBuild plan: PLAN.md\nContributor guide: CONTRIBUTING.md\nIssues: Report on GitHub (or via OpenClaw maintainers)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/qsmtco/curated-search",
    "publisherUrl": "https://clawhub.ai/qsmtco/curated-search",
    "owner": "qsmtco",
    "version": "1.0.7",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/curated-search",
    "downloadUrl": "https://openagent3.xyz/downloads/curated-search",
    "agentUrl": "https://openagent3.xyz/skills/curated-search/agent",
    "manifestUrl": "https://openagent3.xyz/skills/curated-search/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/curated-search/agent.md"
  }
}