[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R5NQFWNFCAXZACNMMK6SY2":3,"skill-same:01M6R5NQFWNFCAXZACNMMK6SY2":119},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":47,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6R5NQFWNFCAXZACNMMK6SY2","open-meteo-weather",null,"Resolve a place and fetch global forecast and air-quality evidence through governed, keyless Open-Meteo HTTP calls.","runxhq\u002Frunx","runxhq","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F278566904?v=4","01M6R54JKTWZNT4VQZ0K0DZ7V2","runx","01M6R54JRGDE4MDVDDR0E9MN0K",103,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36],"weather","open","open meteo weather","forecast","http","keyless","quality","global","fetch","evidence","air","quality evidence","calls","2026-11-10 10:12:30",false,"---\nname: open-meteo-weather\ndescription: Resolve a place and fetch global forecast and air-quality evidence through governed, keyless Open-Meteo HTTP calls.\n---\n\n# Open-Meteo Weather\n\nFetch global place, forecast, and air-quality evidence through runx's governed\nconnector boundary. The skill never performs an ad-hoc fetch. Each provider stage is a bounded,\nread-only HTTP runner whose endpoint, inputs, status, authority scope, and\noutput packet are recorded in the sealed receipt. The built-in connector uses\npublic keyless endpoints. Commercial use needs an appropriate Open-Meteo plan\nand connector; keyless access is not a commercial entitlement. This is the worldwide counterpart to the US-only\n`nws-weather` provider.\n\n## Procedure\n\n1. Run the default `weather` runner with `name` and any regional `location_context`.\n   It reads the geocoder once and asks the operating agent to select an actual\n   returned candidate, or preserve unresolved ambiguity.\n2. A bounded domain function binds that candidate id to the original provider\n   record before any weather request. The record and native geocoding readback\n   remain in `location`; request coordinates use six decimal places to match\n   the existing connector input contract.\n3. Read the requested `kind`: `forecast` (default) or `air_quality`. Already\n   resolved coordinates use the explicit `forecast` or `air_quality` runner,\n   bypassing geocoding and selection entirely.\n4. Require a 2xx response and preserve the provider URL, timezone, generation\n   time, current conditions, daily forecast, and receipt references.\n5. Treat the result as context only. Any notification, scheduling change, or\n   operational mutation requires a separate skill and authority gate.\n\n## Inputs\n\n- `name` (`weather` and `locate`, required): city or place to resolve.\n- `location_context` (`weather`, optional): country, administrative area or other intent.\n- `kind` (`weather`, optional): `forecast` or `air_quality`, default `forecast`.\n- `latitude` (`forecast`, required): decimal latitude.\n- `longitude` (`forecast`, required): decimal longitude.\n- `forecast_days` (`forecast`, optional): days requested, default `3`.\n\n## Output packets\n\nThe default returns `location` plus the requested provider operation evidence.\nAmbiguous, unmatched or invalid selection returns its candidates and reason\nwithout a weather request. `locate` retains raw geocoding candidates for graphs.\nThe explicit `forecast` runner takes a selected latitude and longitude and\nreturns forecast evidence without geocoding again. `air_quality` likewise takes\ncoordinates directly. There is no dependency between an unrelated place name\nand separately supplied coordinates. Each provider operation and its returned\nevidence remain in the sealed receipt.\n\nPreserve provider metadata and receipt references when passing either packet to\nanother skill. Do not convert provider evidence into high-stakes advice.\n\n## Failure, retry, and stop conditions\n\n- **Ambiguous or missing place:** return `needs_input`; do not silently choose a\n  similarly named location.\n- **Invalid coordinates or forecast-days value:** return `needs_input`.\n- **Non-2xx response, timeout, or rate limit:** return `needs_more_evidence`,\n  preserve the failure in the receipt, and retry only under the caller's retry\n  policy.\n- **Stale or incomplete provider response:** return `needs_more_evidence`.\n- **Life-safety, medical, aviation, maritime, or emergency use:** refuse and\n  direct the caller to official channels.\n- **Mutation requested from forecast evidence:** stop after the sealed read and\n  require a separate authority-scoped action skill.\n\n## Worked example\n\n1. Run `locate` with `name: Shanghai`.\n2. Select the result for Shanghai, China.\n3. Run `forecast` using the sealed latitude and longitude with\n   `forecast_days: \"3\"`.\n4. Preserve both sealed receipts with the returned forecast evidence.\n\n## Credits\n\nCombined from two community contributions: the forecast skill (#63, @why123-boop) and the air-quality snapshot (#64, @yanziwei).\n\n## Agent task: open-meteo-select-location\n\nRead the actual geocoding results and the operator's location intent. Return\nselection with decision selected, selected_id set to one returned integer id,\nand a concise reason only when that candidate matches the intended location.\nNever choose the first result merely because it is first, fabricate coordinates\nor treat an unqualified common place name as unambiguous. Country and region\ncontext can distinguish candidates; population alone cannot establish intent.\nOtherwise return needs_input with selected_id null and name the missing region\nor ambiguity. An empty candidate set is not evidence of missing weather.\n\nThe domain binding owns candidate identity and coordinate admission; the\nconnector owns all provider calls and readback. No notification or action is\npart of this selection. The operator may call the existing coordinate phases\nwith a previously selected location instead of geocoding again.\n\nGeocoding fields and commercial access are described in the\n[Open-Meteo geocoding documentation](https:\u002F\u002Fopen-meteo.com\u002Fen\u002Fdocs\u002Fgeocoding-api).\n","# Open-Meteo Weather\n\nFetch global place, forecast, and air-quality evidence through runx's governed\nconnector boundary. The skill never performs an ad-hoc fetch. Each provider stage is a bounded,\nread-only HTTP runner whose endpoint, inputs, status, authority scope, and\noutput packet are recorded in the sealed receipt. The built-in connector uses\npublic keyless endpoints. Commercial use needs an appropriate Open-Meteo plan\nand connector; keyless access is not a commercial entitlement. This is the worldwide counterpart to the US-only\n`nws-weather` provider.\n\n## Procedure\n\n1. Run the default `weather` runner with `name` and any regional `location_context`.\n   It reads the geocoder once and asks the operating agent to select an actual\n   returned candidate, or preserve unresolved ambiguity.\n2. A bounded domain function binds that candidate id to the original provider\n   record before any weather request. The record and native geocoding readback\n   remain in `location`; request coordinates use six decimal places to match\n   the existing connector input contract.\n3. Read the requested `kind`: `forecast` (default) or `air_quality`. Already\n   resolved coordinates use the explicit `forecast` or `air_quality` runner,\n   bypassing geocoding and selection entirely.\n4. Require a 2xx response and preserve the provider URL, timezone, generation\n   time, current conditions, daily forecast, and receipt references.\n5. Treat the result as context only. Any notification, scheduling change, or\n   operational mutation requires a separate skill and authority gate.\n\n## Inputs\n\n- `name` (`weather` and `locate`, required): city or place to resolve.\n- `location_context` (`weather`, optional): country, administrative area or other intent.\n- `kind` (`weather`, optional): `forecast` or `air_quality`, default `forecast`.\n- `latitude` (`forecast`, required): decimal latitude.\n- `longitude` (`forecast`, required): decimal longitude.\n- `forecast_days` (`forecast`, optional): days requested, default `3`.\n\n## Output packets\n\nThe default returns `location` plus the requested provider operation evidence.\nAmbiguous, unmatched or invalid selection returns its candidates and reason\nwithout a weather request. `locate` retains raw geocoding candidates for graphs.\nThe explicit `forecast` runner takes a selected latitude and longitude and\nreturns forecast evidence without geocoding again. `air_quality` likewise takes\ncoordinates directly. There is no dependency between an unrelated place name\nand separately supplied coordinates. Each provider operation and its returned\nevidence remain in the sealed receipt.\n\nPreserve provider metadata and receipt references when passing either packet to\nanother skill. Do not convert provider evidence into high-stakes advice.\n\n## Failure, retry, and stop conditions\n\n- **Ambiguous or missing place:** return `needs_input`; do not silently choose a\n  similarly named location.\n- **Invalid coordinates or forecast-days value:** return `needs_input`.\n- **Non-2xx response, timeout, or rate limit:** return `needs_more_evidence`,\n  preserve the failure in the receipt, and retry only under the caller's retry\n  policy.\n- **Stale or incomplete provider response:** return `needs_more_evidence`.\n- **Life-safety, medical, aviation, maritime, or emergency use:** refuse and\n  direct the caller to official channels.\n- **Mutation requested from forecast evidence:** stop after the sealed read and\n  require a separate authority-scoped action skill.\n\n## Worked example\n\n1. Run `locate` with `name: Shanghai`.\n2. Select the result for Shanghai, China.\n3. Run `forecast` using the sealed latitude and longitude with\n   `forecast_days: \"3\"`.\n4. Preserve both sealed receipts with the returned forecast evidence.\n\n## Credits\n\nCombined from two community contributions: the forecast skill (#63, @why123-boop) and the air-quality snapshot (#64, @yanziwei).\n\n## Agent task: open-meteo-select-location\n\nRead the actual geocoding results and the operator's location intent. Return\nselection with decision selected, selected_id set to one returned integer id,\nand a concise reason only when that candidate matches the intended location.\nNever choose the first result merely because it is first, fabricate coordinates\nor treat an unqualified common place name as unambiguous. Country and region\ncontext can distinguish candidates; population alone cannot establish intent.\nOtherwise return needs_input with selected_id null and name the missing region\nor ambiguity. An empty candidate set is not evidence of missing weather.\n\nThe domain binding owns candidate identity and coordinate admission; the\nconnector owns all provider calls and readback. No notification or action is\npart of this selection. The operator may call the existing coordinate phases\nwith a previously selected location instead of geocoding again.\n\nGeocoding fields and commercial access are described in the\n[Open-Meteo geocoding documentation](https:\u002F\u002Fopen-meteo.com\u002Fen\u002Fdocs\u002Fgeocoding-api).\n",{"name":5,"description":7},"main","e05cdf515dab5eb262dd9357ac85f923b4cb21b1","skills\u002Fopen-meteo-weather",108,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx","https:\u002F\u002Frunx.ai","https:\u002F\u002Fgithub.com\u002Frunxhq","the governed runtime for agent skills","2026-11-09 02:24:51",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add runxhq\u002Frunx --skill open-meteo-weather",{"tool":57,"command":58},"bunx","bunx skills add runxhq\u002Frunx --skill open-meteo-weather",{"tool":60,"command":61},"pnpm","pnpm dlx skills add runxhq\u002Frunx --skill open-meteo-weather","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002FSKILL.md",true,[65,71,75,79,83,87,91,95,99,105,111,115],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"fixtures\u002Fcomposes-in-graph.yaml","REFERENCE","参考文档",833,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fcomposes-in-graph.yaml",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"fixtures\u002Fopen-meteo-air-quality-shanghai.yaml",956,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fopen-meteo-air-quality-shanghai.yaml",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"fixtures\u002Fopen-meteo-shanghai.yaml",2399,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fopen-meteo-shanghai.yaml",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"fixtures\u002Fplace-air-quality.yaml",2709,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fplace-air-quality.yaml",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"fixtures\u002Fplace-ambiguous.yaml",1603,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fplace-ambiguous.yaml",{"path":88,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":89,"sourceHtmlUrl":90},"fixtures\u002Fplace-forecast.yaml",2872,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fplace-forecast.yaml",{"path":92,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":93,"sourceHtmlUrl":94},"fixtures\u002Fplace-invented-id.yaml",1436,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fplace-invented-id.yaml",{"path":96,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":97,"sourceHtmlUrl":98},"fixtures\u002Fplace-no-match.yaml",1226,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fplace-no-match.yaml",{"path":100,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":103,"sourceHtmlUrl":104},"fixtures\u002Fsupport\u002Fcomposed.graph","OTHER","其他",243,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Ffixtures\u002Fsupport\u002Fcomposed.graph",{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"location.mjs","SCRIPT","脚本",1292,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Flocation.mjs",{"path":112,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fcatalog.md",147,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Freferences\u002Fcatalog.md",{"path":116,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":117,"sourceHtmlUrl":118},"run.yaml",5794,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fopen-meteo-weather\u002Frun.yaml",[120,146,169,184,203,220],{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":37},"01M6R60D2HHP5C47QZ7ZBYBHSM","webhook-handoff","Validate a runx execution context and deliver a governed payload once to an n8n Cloud workflow webhook or a Zapier Catch Hook, with exact approval and the receiver's acknowledgement receipted.","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fwebhook-handoff\u002FSKILL.md",[126],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[128,129,130,131,132,12,133,134,135,136,137,138,139,140,141,142,143,144,145],"webhook handoff","webhook","handoff","workflow","receiver","deliver","catch","acknowledgement","hook","with","zapier","n8n","payload","approval","context","execution","cloud","validate",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":37},"01M6R609BT4F4MFVK9M2YZPQTV","web-search","Discover a bounded set of fresh web source candidates from one explicit search query, preserve provider evidence and reported cost, and prepare source selection for fetching and research.","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[153,154,155,156,157,158,159,160,161,162,163,164,165,33,166,167,168],"web search","search","web","cost","bounded","preserve","source","for","fresh","discover","query","selection","provider","SET","prepare","research",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":37},"01M6R5ZV4Z3FK8AHATF7AARXYD","web-fetch","Fetch and extract one public web source, optionally restrict its hosts, and return the content by digest with full provenance.","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fweb-fetch\u002FSKILL.md",[],[32,176,155,159,177,178,137,179,180,181,182,183],"web fetch","hosts","content","full","digest","extract","public","provenance",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":191,"publishedAt":37},"01M6R5ZPRJQZ1Y8CBPT3WHSWCB","vuln-triage","Prioritize actual exact-coordinate vulnerability findings, preserve unknown exposure and partial coverage, and return practical remediation or an unsent advisory draft.","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fvuln-triage\u002FSKILL.md",[190],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[192,193,194,195,196,197,158,198,199,200,201,202],"vuln triage","triage","prioritize","vulnerability","remediation","coverage","unknown","advisory","draft","practical","coordinate",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":210,"publishedAt":37},"01M6R5Z9RR7V456TAW4J5AJG0R","twitter","Govern X (Twitter) account work through three lanes: evidence reads, typed act plans for posting and account hygiene, and gated execution with per-act provider evidence. Nothing reaches a live timeline or mutates an account without an explicit approval recorded in the receipt.","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Ftwitter\u002FSKILL.md",[209],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[205,211,160,137,212,213,214,215,216,217,165,33,141,218,219,143],"live","hygiene","posting","plans","act","gated","three","work","timeline",{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":227,"publishedAt":37},"01M6R5Z3XRVR0V5XTES05XJRV8","team-delegate","Divide bounded work across an operator-selected team and return exact member assignments with source context, scope ceilings and acceptance checks.","https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fteam-delegate\u002FSKILL.md",[226],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[228,229,230,142,231,232,218,157,233,234,137,159],"team delegate","delegate","team","across","operator","scope","acceptance"]