[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R5Q11BMD1GS6CDPVAPFKB4":3,"skill-same:01M6R5Q11BMD1GS6CDPVAPFKB4":133},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":59,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6R5Q11BMD1GS6CDPVAPFKB4","policy-draft",null,"Draft or tighten a Runx operational policy from a governance brief, then validate the exact runx.operational_policy.v1 contract with the native policy engine. Use for repository\u002Fsource\u002Frunner\u002Fowner policy design, fail-closed policy linting, or authority attenuation; never use this lane to widen an existing policy.","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\u002Fpolicy-draft\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"draft","policy draft","policy","contract","authority","Existing","for","v1","with","native","linting","governance","design","runner","never","use","engine","lane","brief","policy engine","2026-11-10 10:12:30",false,"---\nname: policy-draft\ndescription: Draft or tighten a Runx operational policy from a governance brief, then validate the exact runx.operational_policy.v1 contract with the native policy engine. Use for repository\u002Fsource\u002Frunner\u002Fowner policy design, fail-closed policy linting, or authority attenuation; never use this lane to widen an existing policy.\n---\n\n# Policy Draft\n\nProduce one reviewable operational-policy proposal. Let the agent translate\nintent into policy fields; let the native `policy.lint` tool decide whether the\nexact in-memory result is a valid Runx policy.\n\n## Workflow\n\n1. Require concrete target repositories, source locators, owner routes, and an\n   available runner. Return `needs_input` when any are unresolved.\n2. Draft the smallest `runx.operational_policy.v1` that admits the stated work.\n   Unspecified work remains denied.\n3. When `existing_policy` is supplied, preserve its target\u002Fsource\u002Frunner set and\n   only attenuate authority. Do not add locators, actions, targets, sources, or\n   runners; do not lower confidence or weaken human gates.\n4. Pass the draft to the deterministic validation step. Never author or trust an\n   agent-supplied lint verdict.\n5. Native `data.compare` checks retained identity, provider\u002Fkind, owner routing,\n   branch, dedupe and opaque adapter settings. Those settings must remain equal:\n   this generic lane cannot infer whether changing them narrows authority.\n6. Return `ready` only when native lint and that comparison pass. A native failure or attempted\n   widening returns `reject` with structured findings.\n\n## Native policy contract\n\nDraft the exact contract consumed by `policy.lint` and the Runx policy parser:\n\n```yaml\nschema: runx.operational_policy.v1\nschema_version: runx.operational_policy.v1\npolicy_id: string\nsources:\n  - source_id: string\n    provider: string\n    allowed_locators: [string]\n    allowed_actions: [string]\n    source_thread:\n      required: boolean\n      publish_mode: reply | comment | none\n      missing_behavior: fail_closed\n    minimum_confidence: number     # optional\nrunners:\n  - runner_id: string\n    kind: string\n    state: available | unavailable\n    allowed_actions: [string]\n    target_repos: [owner\u002Frepo]\n    scafld_required: boolean\nowner_routes:\n  - route_id: string\n    owners: [string]\n    target_repos: [owner\u002Frepo]\ntargets:\n  - repo: owner\u002Frepo\n    runner_ids: [string]\n    allowed_actions: [string]\n    default_owner_route: string\n    scafld_required: boolean\n    base_branch: string            # optional\ndedupe:\n  strategy: source_digest\n  key_fields: [string]\n  on_duplicate: reuse | comment | block\noutcomes:\n  observe_provider: boolean\n  verification_required: boolean\n  close_source_issue: never | when_verified | always\n  publish_final_source_thread_update: boolean\npermissions:\n  auto_merge: boolean\n  mutate_target_repo: boolean\n  require_human_merge_gate: boolean\n```\n\n## Stop conditions\n\n- Missing repository, locator, runner, or owner evidence: `needs_input` with\n  `policy: null`; native lint is not run.\n- Proposed widening of an existing policy: `reject` before lint and identify the\n  widened path.\n- Native parse or validation failure: `reject`; never relabel it as ready.\n- A request to widen authority: stop and route it to a separate explicit policy\n  decision. This skill's existing-policy lane is attenuation-only.\n\n## Output\n\nThe final `policy_proposal` contains:\n\n```yaml\ndecision: ready | needs_input | reject\npolicy: object | null\nvalidation:\n  status: pass | fail | not_run\n  engine: runx policy\n  findings: [{ code, path, message }]\n  readback: object | null\n  reason: string\nrationale: string\nblockers: [string]\nneeds_input: [string]\nsuccess_checkpoint: object\n```\n\nThe host supplies the actual current native-valid baseline; this is not authority\nto replace a different installed policy. Existing sources, targets and runners\nmay be removed or their declared action\u002Ftarget sets narrowed. Confidence, required\nreview and verification cannot weaken; an unavailable runner cannot be enabled.\nOwner-route roster reordering is immaterial, but changing its membership or\nunknown provider settings needs a separate explicit policy decision.\n\nThe runtime receipt proves which draft was validated. It does not approve or\ninstall the policy.\n\n## Agent task contracts\n\n### `policy-draft-draft`\n\nDraft one policy proposal using the exact runx.operational_policy.v1 contract described by the\nskill. Return decision, policy, rationale, blockers, needs_input, and success_checkpoint. Do not\nauthor a lint verdict: the next deterministic step invokes native `policy.lint`. If required\nrepos, source locators, owners, or runner bindings are missing, return needs_input with policy\nnull. When existing_policy is supplied, never add authority, targets, sources, runners,\nlocators, or actions; only tighten permissions, confidence, routing, and outcomes.\n","# Policy Draft\n\nProduce one reviewable operational-policy proposal. Let the agent translate\nintent into policy fields; let the native `policy.lint` tool decide whether the\nexact in-memory result is a valid Runx policy.\n\n## Workflow\n\n1. Require concrete target repositories, source locators, owner routes, and an\n   available runner. Return `needs_input` when any are unresolved.\n2. Draft the smallest `runx.operational_policy.v1` that admits the stated work.\n   Unspecified work remains denied.\n3. When `existing_policy` is supplied, preserve its target\u002Fsource\u002Frunner set and\n   only attenuate authority. Do not add locators, actions, targets, sources, or\n   runners; do not lower confidence or weaken human gates.\n4. Pass the draft to the deterministic validation step. Never author or trust an\n   agent-supplied lint verdict.\n5. Native `data.compare` checks retained identity, provider\u002Fkind, owner routing,\n   branch, dedupe and opaque adapter settings. Those settings must remain equal:\n   this generic lane cannot infer whether changing them narrows authority.\n6. Return `ready` only when native lint and that comparison pass. A native failure or attempted\n   widening returns `reject` with structured findings.\n\n## Native policy contract\n\nDraft the exact contract consumed by `policy.lint` and the Runx policy parser:\n\n```yaml\nschema: runx.operational_policy.v1\nschema_version: runx.operational_policy.v1\npolicy_id: string\nsources:\n  - source_id: string\n    provider: string\n    allowed_locators: [string]\n    allowed_actions: [string]\n    source_thread:\n      required: boolean\n      publish_mode: reply | comment | none\n      missing_behavior: fail_closed\n    minimum_confidence: number     # optional\nrunners:\n  - runner_id: string\n    kind: string\n    state: available | unavailable\n    allowed_actions: [string]\n    target_repos: [owner\u002Frepo]\n    scafld_required: boolean\nowner_routes:\n  - route_id: string\n    owners: [string]\n    target_repos: [owner\u002Frepo]\ntargets:\n  - repo: owner\u002Frepo\n    runner_ids: [string]\n    allowed_actions: [string]\n    default_owner_route: string\n    scafld_required: boolean\n    base_branch: string            # optional\ndedupe:\n  strategy: source_digest\n  key_fields: [string]\n  on_duplicate: reuse | comment | block\noutcomes:\n  observe_provider: boolean\n  verification_required: boolean\n  close_source_issue: never | when_verified | always\n  publish_final_source_thread_update: boolean\npermissions:\n  auto_merge: boolean\n  mutate_target_repo: boolean\n  require_human_merge_gate: boolean\n```\n\n## Stop conditions\n\n- Missing repository, locator, runner, or owner evidence: `needs_input` with\n  `policy: null`; native lint is not run.\n- Proposed widening of an existing policy: `reject` before lint and identify the\n  widened path.\n- Native parse or validation failure: `reject`; never relabel it as ready.\n- A request to widen authority: stop and route it to a separate explicit policy\n  decision. This skill's existing-policy lane is attenuation-only.\n\n## Output\n\nThe final `policy_proposal` contains:\n\n```yaml\ndecision: ready | needs_input | reject\npolicy: object | null\nvalidation:\n  status: pass | fail | not_run\n  engine: runx policy\n  findings: [{ code, path, message }]\n  readback: object | null\n  reason: string\nrationale: string\nblockers: [string]\nneeds_input: [string]\nsuccess_checkpoint: object\n```\n\nThe host supplies the actual current native-valid baseline; this is not authority\nto replace a different installed policy. Existing sources, targets and runners\nmay be removed or their declared action\u002Ftarget sets narrowed. Confidence, required\nreview and verification cannot weaken; an unavailable runner cannot be enabled.\nOwner-route roster reordering is immaterial, but changing its membership or\nunknown provider settings needs a separate explicit policy decision.\n\nThe runtime receipt proves which draft was validated. It does not approve or\ninstall the policy.\n\n## Agent task contracts\n\n### `policy-draft-draft`\n\nDraft one policy proposal using the exact runx.operational_policy.v1 contract described by the\nskill. Return decision, policy, rationale, blockers, needs_input, and success_checkpoint. Do not\nauthor a lint verdict: the next deterministic step invokes native `policy.lint`. If required\nrepos, source locators, owners, or runner bindings are missing, return needs_input with policy\nnull. When existing_policy is supplied, never add authority, targets, sources, runners,\nlocators, or actions; only tighten permissions, confidence, routing, and outcomes.\n",{"name":5,"description":7},"main","e05cdf515dab5eb262dd9357ac85f923b4cb21b1","skills\u002Fpolicy-draft",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":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add runxhq\u002Frunx --skill policy-draft",{"tool":69,"command":70},"bunx","bunx skills add runxhq\u002Frunx --skill policy-draft",{"tool":72,"command":73},"pnpm","pnpm dlx skills add runxhq\u002Frunx --skill policy-draft","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002FSKILL.md",true,[77,83,87,93,97,101,107,111,117,121,125,129],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"fixtures\u002Fcomposes-in-graph.yaml","REFERENCE","参考文档",3900,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Ffixtures\u002Fcomposes-in-graph.yaml",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"fixtures\u002Fissue-flow-policy-from-brief.yaml",5631,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Ffixtures\u002Fissue-flow-policy-from-brief.yaml",{"path":88,"resourceType":89,"resourceTypeDesc":90,"sizeBytes":91,"sourceHtmlUrl":92},"fixtures\u002Fsupport\u002Fcomposed.graph","OTHER","其他",521,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Ffixtures\u002Fsupport\u002Fcomposed.graph",{"path":94,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":95,"sourceHtmlUrl":96},"fixtures\u002Ftighten-existing-policy.yaml",4675,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Ffixtures\u002Ftighten-existing-policy.yaml",{"path":98,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":99,"sourceHtmlUrl":100},"fixtures\u002Fvague-brief-needs-input.yaml",1287,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Ffixtures\u002Fvague-brief-needs-input.yaml",{"path":102,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":105,"sourceHtmlUrl":106},"mark.svg","ASSET","资产文件",520,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Fmark.svg",{"path":108,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":109,"sourceHtmlUrl":110},"packets\u002Fproposal.v1.schema.json",3147,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Fpackets\u002Fproposal.v1.schema.json",{"path":112,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":115,"sourceHtmlUrl":116},"policy-draft.mjs","SCRIPT","脚本",10431,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Fpolicy-draft.mjs",{"path":118,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":119,"sourceHtmlUrl":120},"policy-draft.test.mjs",3481,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Fpolicy-draft.test.mjs",{"path":122,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":123,"sourceHtmlUrl":124},"references\u002Fcatalog.md",160,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Freferences\u002Fcatalog.md",{"path":126,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":127,"sourceHtmlUrl":128},"references\u002Fmark-license.md",3208,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Freferences\u002Fmark-license.md",{"path":130,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":131,"sourceHtmlUrl":132},"run.yaml",11102,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fpolicy-draft\u002Frun.yaml",[134,159,182,198,216,233],{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":141,"publishedAt":49},"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",[140],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[142,143,144,145,146,12,147,148,149,150,37,151,152,153,154,155,156,157,158],"webhook handoff","webhook","handoff","workflow","receiver","deliver","catch","acknowledgement","hook","zapier","n8n","payload","approval","context","execution","cloud","validate",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":49},"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",[],[166,167,168,169,170,171,172,35,173,174,175,176,177,178,179,180,181],"web search","search","web","cost","bounded","preserve","source","fresh","discover","query","selection","provider","evidence","SET","prepare","research",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":49},"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",[],[189,190,168,172,191,192,37,193,194,195,196,197],"fetch","web fetch","hosts","content","full","digest","extract","public","provenance",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":205,"publishedAt":49},"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",[204],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[206,207,208,209,210,211,171,212,213,29,214,215],"vuln triage","triage","prioritize","vulnerability","remediation","coverage","unknown","advisory","practical","coordinate",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":220,"categories":221,"keywords":223,"publishedAt":49},"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",[222],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[218,224,35,37,225,226,227,228,229,230,177,178,154,231,232,156],"live","hygiene","posting","plans","act","gated","three","work","timeline",{"skillNo":234,"name":235,"nameZh":6,"description":236,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":237,"categories":238,"keywords":240,"publishedAt":49},"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",[239],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[241,242,243,155,244,245,231,170,246,247,37,172],"team delegate","delegate","team","across","operator","scope","acceptance"]