[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R5RGPSA8CSZ8GQSYAGNEM5":3,"skill-same:01M6R5RGPSA8CSZ8GQSYAGNEM5":134},{"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":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":46,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M6R5RGPSA8CSZ8GQSYAGNEM5","privacy-request-review",null,"Judge a data subject erasure or export request against explicit policy evidence, record the verdict durably through the store, and emit only a bounded handoff for a separate governed downstream run.","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\u002Fprivacy-request-review\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"review","request","privacy","privacy request review","bounded","handoff","data","export","judge","run","verdict","record","store","only","policy","for","evidence","2026-11-10 10:12:30",false,"---\nname: privacy-request-review\ndescription: Judge a data subject erasure or export request against explicit policy evidence, record the verdict durably through the store, and emit only a bounded handoff for a separate governed downstream run.\n---\n\n# Privacy Request Review\n\nJudge whether a data subject request is in policy without erasing, exporting,\nor sending anything. The skill consumes a request packet, metadata of an upstream-verified requestor assertion, and\npolicy bounds, decides eligibility deterministically, appends the verdict to\nthe subject request event stream through the store's `events.append`, and returns a bounded\nhandoff that a separate governed operator run may consume.\n\nThis is not a legal authority and does not replace counsel. It is an execution\nboundary for policy evidence: the receipt proves which inputs were inspected,\nwhich lawful basis was named, which scope was allowed or refused, and which\ndurable verdict was appended.\n\n## Procedure\n\n1. Native `data.digest` binds the exact request packet and policy.\n2. Deterministic judgment: the request type must be erasure or export, the\n   identity provider must be in `trusted_identity_providers`, the proof must\n   carry a valid `verified_at` and a sha256 assertion digest bound to the same\n   subject, a lawful basis must be named for the request type, and every\n   requested data class and scope must sit inside both `scope_bounds.data_classes` and\n   the type-specific allowed list. Explicit requested scopes must also be within\n   the requested data classes. These names are exact policy identifiers, not a\n   wildcard or implicit subfield language. A mismatch refuses with named reasons;\n   nothing is inferred.\n3. The verdict, eligible or refused, is appended to the pinned store\n   stream with optimistic concurrency and an idempotency key, so repeated runs\n   cannot double-record. A verdict decides something about a person, so the\n   append waits on a person's approval of the exact event (`privacy_verdict`),\n   whatever the run's `effects`.\n4. An independent `events.read` reads the exact original event position.\n   Finalization requires a committed\u002Freplayed append at the expected version\n   and matching source, event id, version and digest. A conflict cannot become\n   a committed verdict. The final packet retains both native input digests.\n5. An eligible result carries the exact subject\u002Fclasses\u002Fscopes but no selected\n   execution path. The operator must choose the owning product's erasure or\n   secure subject-export capability. A refusal carries human review and no\n   handoff. Do not invent a generic read\u002Fredact\u002Fsend pipeline.\n\n`downstream_effect_performed` is always false; the downstream operator owns the\nactual erasure or export under its own authority and receipt.\n\n## Output\n\n`subject_request_verdict` (`runx\u002Fprivacy-request-review.verdict.v1`) carries `request`,\n`decision`, `escalation`, `legal`, `requestor`, `scope_bounds`, `handoff` or\nnull, `persistence` with the committed stream version, and both input digests.\n\nInputs are `request_packet`, `requestor_proof`, `policy`, and the request's\nplace in this skill's own `requests` stream, which only it writes: its `key`,\n`expected_version` and `idempotency_key`. `persistence.key` reports that key.\n\n## Trust and continuation\n\nThe host must obtain and verify identity through its actual identity provider\nbefore supplying assertion metadata. A timestamp, trusted provider name and\ndigest-shaped string do not independently authenticate anyone. This review\nchecks the supplied bindings against policy and records that conditional\njudgment; it performs no provider verification or legal determination.\n\nRetain the original assertion\u002Fsource provenance, policy, request and stable key\nwith the result. Delivery must bind the actual verified requester and secure\ndestination. Export the subject's entitled data: blindly applying PII redaction\nto that subject's own records can defeat the request. Apply third-party\nredaction or withholding only under the selected product's explicit policy.\n\nA stale append returns a failure with no committed verdict. Inspect the current\nstream and preserve the original identity; do not silently retry a new write.\nReadback checks the original event position, so later unrelated events do not\ninvalidate confirmation of an already committed verdict. A committed policy\nverdict is never authorization or proof of erasure, export or delivery.\n","# Privacy Request Review\n\nJudge whether a data subject request is in policy without erasing, exporting,\nor sending anything. The skill consumes a request packet, metadata of an upstream-verified requestor assertion, and\npolicy bounds, decides eligibility deterministically, appends the verdict to\nthe subject request event stream through the store's `events.append`, and returns a bounded\nhandoff that a separate governed operator run may consume.\n\nThis is not a legal authority and does not replace counsel. It is an execution\nboundary for policy evidence: the receipt proves which inputs were inspected,\nwhich lawful basis was named, which scope was allowed or refused, and which\ndurable verdict was appended.\n\n## Procedure\n\n1. Native `data.digest` binds the exact request packet and policy.\n2. Deterministic judgment: the request type must be erasure or export, the\n   identity provider must be in `trusted_identity_providers`, the proof must\n   carry a valid `verified_at` and a sha256 assertion digest bound to the same\n   subject, a lawful basis must be named for the request type, and every\n   requested data class and scope must sit inside both `scope_bounds.data_classes` and\n   the type-specific allowed list. Explicit requested scopes must also be within\n   the requested data classes. These names are exact policy identifiers, not a\n   wildcard or implicit subfield language. A mismatch refuses with named reasons;\n   nothing is inferred.\n3. The verdict, eligible or refused, is appended to the pinned store\n   stream with optimistic concurrency and an idempotency key, so repeated runs\n   cannot double-record. A verdict decides something about a person, so the\n   append waits on a person's approval of the exact event (`privacy_verdict`),\n   whatever the run's `effects`.\n4. An independent `events.read` reads the exact original event position.\n   Finalization requires a committed\u002Freplayed append at the expected version\n   and matching source, event id, version and digest. A conflict cannot become\n   a committed verdict. The final packet retains both native input digests.\n5. An eligible result carries the exact subject\u002Fclasses\u002Fscopes but no selected\n   execution path. The operator must choose the owning product's erasure or\n   secure subject-export capability. A refusal carries human review and no\n   handoff. Do not invent a generic read\u002Fredact\u002Fsend pipeline.\n\n`downstream_effect_performed` is always false; the downstream operator owns the\nactual erasure or export under its own authority and receipt.\n\n## Output\n\n`subject_request_verdict` (`runx\u002Fprivacy-request-review.verdict.v1`) carries `request`,\n`decision`, `escalation`, `legal`, `requestor`, `scope_bounds`, `handoff` or\nnull, `persistence` with the committed stream version, and both input digests.\n\nInputs are `request_packet`, `requestor_proof`, `policy`, and the request's\nplace in this skill's own `requests` stream, which only it writes: its `key`,\n`expected_version` and `idempotency_key`. `persistence.key` reports that key.\n\n## Trust and continuation\n\nThe host must obtain and verify identity through its actual identity provider\nbefore supplying assertion metadata. A timestamp, trusted provider name and\ndigest-shaped string do not independently authenticate anyone. This review\nchecks the supplied bindings against policy and records that conditional\njudgment; it performs no provider verification or legal determination.\n\nRetain the original assertion\u002Fsource provenance, policy, request and stable key\nwith the result. Delivery must bind the actual verified requester and secure\ndestination. Export the subject's entitled data: blindly applying PII redaction\nto that subject's own records can defeat the request. Apply third-party\nredaction or withholding only under the selected product's explicit policy.\n\nA stale append returns a failure with no committed verdict. Inspect the current\nstream and preserve the original identity; do not silently retry a new write.\nReadback checks the original event position, so later unrelated events do not\ninvalidate confirmation of an already committed verdict. A committed policy\nverdict is never authorization or proof of erasure, export or delivery.\n",{"name":5,"description":7},"main","14cf84bcc80d7abf0008335efac4d92aacfa682e","skills\u002Fprivacy-request-review",108,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx","https:\u002F\u002Frunx.ai","https:\u002F\u002Fgithub.com\u002Frunxhq","the governed runtime for agent skills","2026-11-14 13:45:54",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add runxhq\u002Frunx --skill privacy-request-review",{"tool":56,"command":57},"bunx","bunx skills add runxhq\u002Frunx --skill privacy-request-review",{"tool":59,"command":60},"pnpm","pnpm dlx skills add runxhq\u002Frunx --skill privacy-request-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002FSKILL.md",true,[64,70,74,78,84,88,94,98,102,106,110,114,118,122,126,130],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"eval_queries.json","REFERENCE","参考文档",2546,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Feval_queries.json",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"evals\u002Fevals.json",361,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Fevals\u002Fevals.json",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"evals\u002Ffiles\u002Frecorded-erasure-verdict.json",3509,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Fevals\u002Ffiles\u002Frecorded-erasure-verdict.json",{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"mark.svg","ASSET","资产文件",378,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Fmark.svg",{"path":85,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":86,"sourceHtmlUrl":87},"packets\u002Fverdict.v1.schema.json",5013,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Fpackets\u002Fverdict.v1.schema.json",{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"privacy-request-review.mjs","SCRIPT","脚本",4534,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Fprivacy-request-review.mjs",{"path":95,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":96,"sourceHtmlUrl":97},"privacy-request-review.test.mjs",3568,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Fprivacy-request-review.test.mjs",{"path":99,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fcatalog.md",165,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Freferences\u002Fcatalog.md",{"path":103,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fmark-license.md",3208,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Freferences\u002Fmark-license.md",{"path":107,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":108,"sourceHtmlUrl":109},"run.yaml",8389,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Frun.yaml",{"path":111,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":112,"sourceHtmlUrl":113},"tests\u002Fcomposes-in-workflow.yaml",249,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Ftests\u002Fcomposes-in-workflow.yaml",{"path":115,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":116,"sourceHtmlUrl":117},"tests\u002Fconflicted-append.yaml",219,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Ftests\u002Fconflicted-append.yaml",{"path":119,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":120,"sourceHtmlUrl":121},"tests\u002Fprivacy-request-review-eligible-erasure-records-verdict.yaml",1620,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Ftests\u002Fprivacy-request-review-eligible-erasure-records-verdict.yaml",{"path":123,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":124,"sourceHtmlUrl":125},"tests\u002Fprivacy-request-review-needs-policy.yaml",395,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Ftests\u002Fprivacy-request-review-needs-policy.yaml",{"path":127,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":128,"sourceHtmlUrl":129},"tests\u002Fprivacy-request-review-unverified-requestor-refused.yaml",1380,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Ftests\u002Fprivacy-request-review-unverified-requestor-refused.yaml",{"path":131,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":132,"sourceHtmlUrl":133},"tests\u002Frefuses-scope-outside-the-requested-data-classes.yaml",1392,"https:\u002F\u002Fgithub.com\u002Frunxhq\u002Frunx\u002Fblob\u002Fmain\u002Fskills\u002Fprivacy-request-review\u002Ftests\u002Frefuses-scope-outside-the-requested-data-classes.yaml",[135,164,185,201,220,237],{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":146,"publishedAt":36},"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",[141],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[147,24,148,149,150,151,12,152,153,154,155,156,157,158,159,160,161,162,163],"webhook","webhook handoff","approval","zapier","context","hook","cloud","payload","n8n","validate","catch","with","workflow","execution","acknowledgement","deliver","receiver",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":36},"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",[],[171,172,173,174,175,176,177,178,34,179,35,180,181,23,182,183,184],"web","search","web search","fresh","preserve","query","selection","provider","discover","SET","cost","prepare","source","research",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":191,"publishedAt":36},"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",[],[192,193,171,194,195,196,197,198,199,158,200,183],"fetch","web fetch","full","content","extract","public","digest","hosts","provenance",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":208,"publishedAt":36},"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",[207],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},[209,210,175,211,212,213,214,215,216,217,218,219],"triage","vuln triage","prioritize","remediation","draft","advisory","vulnerability","unknown","coordinate","practical","coverage",{"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":36},"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",[226],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},[222,35,228,229,158,230,160,178,34,231,232,233,149,234,235,236],"gated","work","plans","three","posting","hygiene","timeline","live","act",{"skillNo":238,"name":239,"nameZh":6,"description":240,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":241,"categories":242,"keywords":244,"publishedAt":36},"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",[243],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},[245,246,247,23,151,183,248,229,158,249,250,251],"team","team delegate","delegate","operator","across","acceptance","scope"]