{
  "schemaVersion": "1.0",
  "item": {
    "slug": "vnstock-free-expert",
    "name": "Vnstock Free Expert",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/NDTChan/vnstock-free-expert",
    "canonicalUrl": "https://clawhub.ai/NDTChan/vnstock-free-expert",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/vnstock-free-expert",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vnstock-free-expert",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "agents/openai.yaml",
      "references/capabilities.md",
      "references/free_tier_playbook.md",
      "references/invocation_recipes.md",
      "references/method_matrix.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",
      "slug": "vnstock-free-expert",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T17:52:02.794Z",
      "expiresAt": "2026-05-17T17:52:02.794Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vnstock-free-expert",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vnstock-free-expert",
        "contentDisposition": "attachment; filename=\"vnstock-free-expert-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "vnstock-free-expert"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/vnstock-free-expert"
    },
    "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/vnstock-free-expert",
    "agentPageUrl": "https://openagent3.xyz/skills/vnstock-free-expert/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vnstock-free-expert/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vnstock-free-expert/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": "VNStock Free Expert",
        "body": "Use this skill when the user needs advanced Vietnam stock analysis with vnstock, while staying safe on free-tier limits."
      },
      {
        "title": "Important packaging note",
        "body": "This skill is self-contained and does not require shipping a separate vnstock/ docs folder.\nAll operational knowledge needed by the agent is stored under:\n\nreferences/"
      },
      {
        "title": "Read order",
        "body": "Read references/capabilities.md.\nRead references/method_matrix.md for exact class/method mapping.\nRead references/free_tier_playbook.md before large runs."
      },
      {
        "title": "Scope and constraints",
        "body": "Library: vnstock only.\nPreferred sources: kbs first, vci fallback.\nNever use tcbs.\nTreat Screener API as unavailable unless user confirms it is restored in their installed version."
      },
      {
        "title": "Free-tier operating rules",
        "body": "No API key: target <= 20 requests/minute.\nFree API key: target <= 60 requests/minute.\nSafe default pacing in scripts: 3.2s/request.\nReuse cached artifacts between steps."
      },
      {
        "title": "Shared confidence rubric (required)",
        "body": "Report confidence as High / Medium / Low using this standard:\n\nHigh: universe coverage >= 95%, critical metrics coverage >= 80%, and hard errors <= 5% of symbols.\nMedium: universe coverage >= 80%, critical metrics coverage >= 60%, and hard errors <= 15%.\nLow: below Medium thresholds or material missing fields that can flip ranking results.\n\nAlways output:\n\nConfidence level.\nCoverage stats (symbols_requested, symbols_scored, % missing by key metric).\nTop missing fields that may change conclusions."
      },
      {
        "title": "API key configuration (implemented)",
        "body": "Skill-local key file: .env\nVariable: VNSTOCK_API_KEY\nAll API-calling scripts auto-load this key and call vnstock auth setup before requests.\nYou can override per run with --api-key \"...\"."
      },
      {
        "title": "Execution workflow (ordered)",
        "body": "Validate environment (python, vnstock, pandas) and load optional API key from .env.\nBuild a universe using scripts/build_universe.py (group, exchange, or symbols mode).\nCollect market data with scripts/collect_market_data.py using safe pacing.\nCollect fundamentals with scripts/collect_fundamentals.py.\nScore and rank using scripts/score_stocks.py.\nGenerate analyst-style memo with scripts/generate_report.py.\nApply confidence rubric, disclose missing fields, and summarize risks."
      },
      {
        "title": "Downstream handoff bundle (required when doing single-ticker deep dive)",
        "body": "When the user request is about valuing or building a memo for a specific ticker (or a small list), output a compact JSON bundle that downstream skills can reuse:\n\nticker, as_of_date, currency\nfinancials (income/balance/cashflow + key ratios if available)\nprice_history (returns 1m/3m/6m/12m)\npeer_set (if you built one)\nmetadata.source and data_quality_notes\n\nThis bundle is designed to feed equity-valuation-framework and portfolio-risk-manager."
      },
      {
        "title": "A) Discovery and universal invocation (for broad feature coverage)",
        "body": "catalog_vnstock.py\nPath: scripts/catalog_vnstock.py\n\nUse when:\n\nYou need to inspect available classes/methods in the installed vnstock version.\nYou want to confirm compatibility before running a method.\n\ninvoke_vnstock.py\nPath: scripts/invoke_vnstock.py\n\nUse when:\n\nYou need to call any supported class/method beyond the prebuilt valuation pipeline.\nYou want one generic entry point for Listing, Quote, Company, Finance, Trading, Fund, or other exported classes.\n\nThis script supports dynamic invocation by class name and method name with JSON kwargs."
      },
      {
        "title": "B) Valuation pipeline scripts",
        "body": "build_universe.py\nUse when building symbol universe from index/exchange/custom symbol list.\nInput: source + mode + group/exchange/symbols.\nOutput: outputs/universe_*.csv and latest pointers.\n\n\ncollect_market_data.py\nUse when collecting OHLCV/momentum fields (3M, 6M, 12M returns).\nInput: universe CSV path.\nOutput: outputs/market_data_*.csv + per-symbol errors in JSON.\n\n\ncollect_fundamentals.py\nUse when collecting valuation and quality metrics from finance/company APIs.\nInput: universe CSV path.\nOutput: outputs/fundamentals_*.csv + per-symbol errors in JSON.\n\n\nscore_stocks.py\nUse when ranking symbols with composite scoring.\nInput: market + fundamentals CSV files.\nOutput: outputs/ranking_*.csv.\n\n\ngenerate_report.py\nUse when converting ranking output to analyst-style markdown memo.\nInput: ranking CSV file.\nOutput: outputs/investment_memo_*.md.\n\n\nrun_pipeline.py\nUse when running the end-to-end pipeline in one command.\nInput: source + universe mode.\nOutput: all artifacts above in one run."
      },
      {
        "title": "Error handling rules",
        "body": "Log symbol-level failures and continue processing remaining symbols.\nDo not claim missing metrics as zeros; mark them as missing.\nIf a critical step fails, stop and report failed step + command + suggested retry scope."
      },
      {
        "title": "Recommended decision logic",
        "body": "If request is “standard valuation/ranking”: run pipeline scripts.\nIf request needs a specific vnstock capability not in pipeline: use catalog_vnstock.py then invoke_vnstock.py.\nIf request volume is large: apply free_tier_playbook.md throttling and chunking strategy."
      },
      {
        "title": "Confidence aggregation (required)",
        "body": "When output includes ranking and valuation interpretation:\n\nCompute data confidence from coverage metrics (symbols_scored, missing key fields, error ratio).\nCompute model confidence from method robustness (single metric vs multi-factor consistency).\nFinal confidence = lower of data confidence and model confidence.\nIn Low confidence cases, provide directional output only and list required missing inputs."
      },
      {
        "title": "Required output template",
        "body": "What Was Run: scripts, source, universe scope, and pacing profile.\nCoverage: requested symbols, scored symbols, and missingness by key field.\nTop Results: ranked list with score columns.\nKey Risks: concentration, stale data, missing metrics, or provider limitations.\nConfidence and Gaps: final confidence + exact blockers."
      },
      {
        "title": "Quick command examples",
        "body": "python scripts/catalog_vnstock.py --outdir ./outputs\npython scripts/invoke_vnstock.py --class-name Quote --init-kwargs '{\"source\":\"kbs\",\"symbol\":\"VCB\"}' --method history --method-kwargs '{\"start\":\"2024-01-01\",\"end\":\"2024-12-31\",\"interval\":\"1D\"}' --outdir ./outputs\npython scripts/run_pipeline.py --source kbs --mode group --group VN30 --outdir ./outputs"
      },
      {
        "title": "Trigger examples",
        "body": "\"Analyze VN30 using vnstock but keep it free-tier safe.\"\n\"Rank Vietnamese stocks by value/quality/momentum with KBS data.\"\n\"Run a full vnstock pipeline and return top candidates with risk notes.\""
      }
    ],
    "body": "VNStock Free Expert\n\nUse this skill when the user needs advanced Vietnam stock analysis with vnstock, while staying safe on free-tier limits.\n\nImportant packaging note\n\nThis skill is self-contained and does not require shipping a separate vnstock/ docs folder. All operational knowledge needed by the agent is stored under:\n\nreferences/\nRead order\nRead references/capabilities.md.\nRead references/method_matrix.md for exact class/method mapping.\nRead references/free_tier_playbook.md before large runs.\nScope and constraints\nLibrary: vnstock only.\nPreferred sources: kbs first, vci fallback.\nNever use tcbs.\nTreat Screener API as unavailable unless user confirms it is restored in their installed version.\nFree-tier operating rules\nNo API key: target <= 20 requests/minute.\nFree API key: target <= 60 requests/minute.\nSafe default pacing in scripts: 3.2s/request.\nReuse cached artifacts between steps.\nShared confidence rubric (required)\n\nReport confidence as High / Medium / Low using this standard:\n\nHigh: universe coverage >= 95%, critical metrics coverage >= 80%, and hard errors <= 5% of symbols.\nMedium: universe coverage >= 80%, critical metrics coverage >= 60%, and hard errors <= 15%.\nLow: below Medium thresholds or material missing fields that can flip ranking results.\n\nAlways output:\n\nConfidence level.\nCoverage stats (symbols_requested, symbols_scored, % missing by key metric).\nTop missing fields that may change conclusions.\nAPI key configuration (implemented)\nSkill-local key file: .env\nVariable: VNSTOCK_API_KEY\nAll API-calling scripts auto-load this key and call vnstock auth setup before requests.\nYou can override per run with --api-key \"...\".\nExecution workflow (ordered)\nValidate environment (python, vnstock, pandas) and load optional API key from .env.\nBuild a universe using scripts/build_universe.py (group, exchange, or symbols mode).\nCollect market data with scripts/collect_market_data.py using safe pacing.\nCollect fundamentals with scripts/collect_fundamentals.py.\nScore and rank using scripts/score_stocks.py.\nGenerate analyst-style memo with scripts/generate_report.py.\nApply confidence rubric, disclose missing fields, and summarize risks.\nDownstream handoff bundle (required when doing single-ticker deep dive)\n\nWhen the user request is about valuing or building a memo for a specific ticker (or a small list), output a compact JSON bundle that downstream skills can reuse:\n\nticker, as_of_date, currency\nfinancials (income/balance/cashflow + key ratios if available)\nprice_history (returns 1m/3m/6m/12m)\npeer_set (if you built one)\nmetadata.source and data_quality_notes\n\nThis bundle is designed to feed equity-valuation-framework and portfolio-risk-manager.\n\nScript map\nA) Discovery and universal invocation (for broad feature coverage)\ncatalog_vnstock.py Path: scripts/catalog_vnstock.py\n\nUse when:\n\nYou need to inspect available classes/methods in the installed vnstock version.\nYou want to confirm compatibility before running a method.\ninvoke_vnstock.py Path: scripts/invoke_vnstock.py\n\nUse when:\n\nYou need to call any supported class/method beyond the prebuilt valuation pipeline.\nYou want one generic entry point for Listing, Quote, Company, Finance, Trading, Fund, or other exported classes.\n\nThis script supports dynamic invocation by class name and method name with JSON kwargs.\n\nB) Valuation pipeline scripts\n\nbuild_universe.py Use when building symbol universe from index/exchange/custom symbol list. Input: source + mode + group/exchange/symbols. Output: outputs/universe_*.csv and latest pointers.\n\ncollect_market_data.py Use when collecting OHLCV/momentum fields (3M, 6M, 12M returns). Input: universe CSV path. Output: outputs/market_data_*.csv + per-symbol errors in JSON.\n\ncollect_fundamentals.py Use when collecting valuation and quality metrics from finance/company APIs. Input: universe CSV path. Output: outputs/fundamentals_*.csv + per-symbol errors in JSON.\n\nscore_stocks.py Use when ranking symbols with composite scoring. Input: market + fundamentals CSV files. Output: outputs/ranking_*.csv.\n\ngenerate_report.py Use when converting ranking output to analyst-style markdown memo. Input: ranking CSV file. Output: outputs/investment_memo_*.md.\n\nrun_pipeline.py Use when running the end-to-end pipeline in one command. Input: source + universe mode. Output: all artifacts above in one run.\n\nError handling rules\nLog symbol-level failures and continue processing remaining symbols.\nDo not claim missing metrics as zeros; mark them as missing.\nIf a critical step fails, stop and report failed step + command + suggested retry scope.\nRecommended decision logic\nIf request is “standard valuation/ranking”: run pipeline scripts.\nIf request needs a specific vnstock capability not in pipeline: use catalog_vnstock.py then invoke_vnstock.py.\nIf request volume is large: apply free_tier_playbook.md throttling and chunking strategy.\nConfidence aggregation (required)\n\nWhen output includes ranking and valuation interpretation:\n\nCompute data confidence from coverage metrics (symbols_scored, missing key fields, error ratio).\nCompute model confidence from method robustness (single metric vs multi-factor consistency).\nFinal confidence = lower of data confidence and model confidence.\nIn Low confidence cases, provide directional output only and list required missing inputs.\nRequired output template\nWhat Was Run: scripts, source, universe scope, and pacing profile.\nCoverage: requested symbols, scored symbols, and missingness by key field.\nTop Results: ranked list with score columns.\nKey Risks: concentration, stale data, missing metrics, or provider limitations.\nConfidence and Gaps: final confidence + exact blockers.\nQuick command examples\npython scripts/catalog_vnstock.py --outdir ./outputs\npython scripts/invoke_vnstock.py --class-name Quote --init-kwargs '{\"source\":\"kbs\",\"symbol\":\"VCB\"}' --method history --method-kwargs '{\"start\":\"2024-01-01\",\"end\":\"2024-12-31\",\"interval\":\"1D\"}' --outdir ./outputs\npython scripts/run_pipeline.py --source kbs --mode group --group VN30 --outdir ./outputs\n\nTrigger examples\n\"Analyze VN30 using vnstock but keep it free-tier safe.\"\n\"Rank Vietnamese stocks by value/quality/momentum with KBS data.\"\n\"Run a full vnstock pipeline and return top candidates with risk notes.\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/NDTChan/vnstock-free-expert",
    "publisherUrl": "https://clawhub.ai/NDTChan/vnstock-free-expert",
    "owner": "NDTChan",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/vnstock-free-expert",
    "downloadUrl": "https://openagent3.xyz/downloads/vnstock-free-expert",
    "agentUrl": "https://openagent3.xyz/skills/vnstock-free-expert/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vnstock-free-expert/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vnstock-free-expert/agent.md"
  }
}