#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) struct OfficialSkillLockEntry {
pub(crate) skill_id: &'static str,
pub(crate) version: &'static str,
pub(crate) digest: &'static str,
}
pub(crate) const OFFICIAL_SKILLS: &[OfficialSkillLockEntry] = &[
OfficialSkillLockEntry {
skill_id: "runx/agency",
version: "sha-44dc0575da43",
digest: "cc47b9574d8aeddc679dc08ca983702e7a75c576ce04fb5bc50b63c7541747c8",
},
OfficialSkillLockEntry {
skill_id: "runx/brand-voice",
version: "sha-79c56911c0ba",
digest: "54bf1ed1013ebc91a5491fb86f15a1bda2e872ac073a12680c58278af0867528",
},
OfficialSkillLockEntry {
skill_id: "runx/business-ops",
version: "sha-75acf9d53694",
digest: "7801492f5b8fa34f0f6e91f9f2729396744c35fe517ae275885e07204bc52b6f",
},
OfficialSkillLockEntry {
skill_id: "runx/charge",
version: "sha-0d05afcfa6ae",
digest: "c151b98be3a2a7ccd306d7395d906ffd1fc22e45a7d94ffe34c294e9db1c47ce",
},
OfficialSkillLockEntry {
skill_id: "runx/content-pipeline",
version: "sha-0efcbf2abed1",
digest: "b93475f254b458a92936cd4612b8d01a59c371876b810eb242b06ce184f2b798",
},
OfficialSkillLockEntry {
skill_id: "runx/data-store",
version: "sha-4b5c8438cb5a",
digest: "5af0e2dd3dd2116874e4fb886e0424f4b944c136b3430a10c31e400a0249113b",
},
OfficialSkillLockEntry {
skill_id: "runx/deep-research-brief",
version: "sha-c2d071df7f50",
digest: "08cefe802c15e5be7d32ae9a363a6c42168e86f7fab92890e5ce5c994af367c9",
},
OfficialSkillLockEntry {
skill_id: "runx/dependency-cve-audit",
version: "sha-6db720882ba0",
digest: "427c964bccd3f5f41c71a90905dd74225547e8b7af11015978e4550db3c27249",
},
OfficialSkillLockEntry {
skill_id: "runx/design-skill",
version: "sha-0353a69bc33f",
digest: "da1eae6fa3016c24dd3347082fe8639577a0b169ebfa63050f0df145e448b82b",
},
OfficialSkillLockEntry {
skill_id: "runx/dispute-respond",
version: "sha-39c3ae5164c4",
digest: "81469e87f29886e11b27faa2249a4e83fae59659f84f6628c81da7de0bf762c5",
},
OfficialSkillLockEntry {
skill_id: "runx/draft-content",
version: "sha-227b32600887",
digest: "356ec279727984c0432d7ff6e3700eea3a518e7eca3eec8e0d548a583e615a26",
},
OfficialSkillLockEntry {
skill_id: "runx/ecosystem-brief",
version: "sha-38b4175917cd",
digest: "50256b25f1c4dfbb74dddce335d34d84c42725599e8f121067f816214545c6d7",
},
OfficialSkillLockEntry {
skill_id: "runx/ecosystem-vuln-scan",
version: "sha-ae2d9968ada2",
digest: "4ef19f394dd9c905518e5e1be1afe98cf361c0adc27d6255153d194020b5e890",
},
OfficialSkillLockEntry {
skill_id: "runx/evolve",
version: "sha-e0e2b933e8a7",
digest: "aa446e7d3ab8a3168facd2372b8bd8fe63736a3e061438d38cc83ea8f294b971",
},
OfficialSkillLockEntry {
skill_id: "runx/github-sync",
version: "sha-e685e9e8b5c6",
digest: "6981adc877736f05a41d764b3e42d479d87de3bc2d69a65992dff457b635bd9a",
},
OfficialSkillLockEntry {
skill_id: "runx/governed-outbound",
version: "sha-1af59c16f770",
digest: "e177cd002efb896e0bba7a6352f19f4d1ec575db1ef548849244ea42725356a6",
},
OfficialSkillLockEntry {
skill_id: "runx/improve-skill",
version: "sha-73e69bae0a5f",
digest: "f083e32ee65bcb6f6f338e8f98443fdb2546b8f63bdc6fcea234897eb30e762b",
},
OfficialSkillLockEntry {
skill_id: "runx/inbox-and-calendar-exec",
version: "sha-ebeea3e0950c",
digest: "10e3aa69cb5fdca2202c881e3f18b7cc54b2b4b4ec9f625bec5d8335924d9b3e",
},
OfficialSkillLockEntry {
skill_id: "runx/issue-intake",
version: "sha-15369469618b",
digest: "cc964980fe249ac3633e7b30c664648f0df9406a0254ede9bb0e3cbcdebdd603",
},
OfficialSkillLockEntry {
skill_id: "runx/issue-to-pr",
version: "sha-6f5184ad4f50",
digest: "c62756dd6f63d2600075cd5ffcee74786b81ef9db99b8ccf9d79362c43595010",
},
OfficialSkillLockEntry {
skill_id: "runx/issue-triage",
version: "sha-a5167273f34a",
digest: "10cbe7f936bc12f7f5e5a2aa926382a6b556c3ae0a572b0851d795316d909ab7",
},
OfficialSkillLockEntry {
skill_id: "runx/knowledge-router",
version: "sha-c9d30f1c392e",
digest: "bcc1f9162d1b64a6e4d922835b42e023611269e03a8e8f9c18cc3f310503d917",
},
OfficialSkillLockEntry {
skill_id: "runx/lead-enrichment",
version: "sha-374078af0e1a",
digest: "a8d1d744f3ec502ed3dd719bd06434d05854a2eaf55ce8ed8ceb57fe830f3b88",
},
OfficialSkillLockEntry {
skill_id: "runx/lead-router",
version: "sha-4345afde1d16",
digest: "4a27b60d2cdd54a5f02163473f756185f9fa5cb57e32c1f59f65fe3472ed3202",
},
OfficialSkillLockEntry {
skill_id: "runx/least-privilege-auditor",
version: "sha-a31f1c09aa5c",
digest: "244df5dd8eed7900d1987c76060893d3c9cd65f420c5b8c177b19fa4e0b81ac2",
},
OfficialSkillLockEntry {
skill_id: "runx/ledger",
version: "sha-3e6341beba7f",
digest: "f91e656d6fcef27dec6e12725c8015be47762514278f37342ff40761838e9f6c",
},
OfficialSkillLockEntry {
skill_id: "runx/messageboard",
version: "sha-7b9930ac9727",
digest: "7fb6092161a234fbea28681ec5e72afd9c2d380e547cf4ef97683f28bb9a6427",
},
OfficialSkillLockEntry {
skill_id: "runx/mock-charge",
version: "sha-52ddd89e5172",
digest: "51f21f9180a94ee12844f3b7ca3e4c508ce14727248660a982ec4c456117640e",
},
OfficialSkillLockEntry {
skill_id: "runx/mock-pay",
version: "sha-174dd46d1669",
digest: "efc70ddce02a87296a90072071141f66684349bce16888fb997371a8f7279c50",
},
OfficialSkillLockEntry {
skill_id: "runx/mock-refund",
version: "sha-cf22c4334afc",
digest: "25fbf4792b69b3240b08141f4145d080db7bc0c357c2d8656ff7013d83684ac1",
},
OfficialSkillLockEntry {
skill_id: "runx/moltbook",
version: "sha-1aa6f8210836",
digest: "14037d45fa2f7a5a154aba3903b2917d2d84a248e1898d2730109d3064c739e8",
},
OfficialSkillLockEntry {
skill_id: "runx/mpp-charge",
version: "sha-cb35686691da",
digest: "1f5ddff16031843acbd5f7180b0647e5ebf8a02c59e446d51c30890ef7e327db",
},
OfficialSkillLockEntry {
skill_id: "runx/mpp-pay",
version: "sha-41927d065dc3",
digest: "bebe8f94a802986c9b8d9dacb73c9753825d61aa24504130adff495d1f7ef099",
},
OfficialSkillLockEntry {
skill_id: "runx/mpp-refund",
version: "sha-8db33fec8299",
digest: "6f2e22db27e85c02d6c05836c2d9e8812c697ba34fe7bfcdfd6fd679d8ee5c18",
},
OfficialSkillLockEntry {
skill_id: "runx/n8n-handoff",
version: "sha-a259d906c37d",
digest: "2f4bd1c042348cd8734f7c7b9b16963a4e15a1585f79f201890a1a665a48d024",
},
OfficialSkillLockEntry {
skill_id: "runx/nitrosend",
version: "sha-a46e1a582e9c",
digest: "cc9c36d6da648078c7222e56d91219575a390029e8737bae1cb5f354cb55f603",
},
OfficialSkillLockEntry {
skill_id: "runx/nws-weather-forecast",
version: "sha-0aeb4bcf16d3",
digest: "382cdef84f660e7cfdc2dbbfd7e8382d204d1f4ee46ffa019549615f9c2f745c",
},
OfficialSkillLockEntry {
skill_id: "runx/open-meteo-weather-forecast",
version: "sha-5d9f95438c9a",
digest: "041e0ec18fa4b646b46b72d34662eabbbfbc43ab5a3a65423b49b3e94e81d159",
},
OfficialSkillLockEntry {
skill_id: "runx/ops-desk",
version: "sha-a2f4840047ee",
digest: "f32f21b6ed6c03f5623bc98f2823365ebcabc721cedf64e8a67c556613a35f59",
},
OfficialSkillLockEntry {
skill_id: "runx/overlay-generator",
version: "sha-b5dc11a7088d",
digest: "e19bbe8dc5f3bf732dc265a1808819587e67759fdf3014d89bc9bf6629400b18",
},
OfficialSkillLockEntry {
skill_id: "runx/policy-author",
version: "sha-a1f056d7c7f7",
digest: "b3bbcbda2711d78c59c572d99206c3116347e9751506301ca40a52c75e85bc84",
},
OfficialSkillLockEntry {
skill_id: "runx/pr-review-note",
version: "sha-537dd9fc3c6b",
digest: "b073ec884f56c9e412d0c1039d5f28f163df0f5530eb0bee922ed4c557955c52",
},
OfficialSkillLockEntry {
skill_id: "runx/prior-art",
version: "sha-2555f66bde78",
digest: "991ec474c6013ce9d29d84df810c14db567328607018c4de9606ba3952d8b9c7",
},
OfficialSkillLockEntry {
skill_id: "runx/receipt-auditor",
version: "sha-acbe46a62851",
digest: "155c522fb8e029bc4bd83863ea0960e23a8936c47977b70052aa9b119675d61e",
},
OfficialSkillLockEntry {
skill_id: "runx/redact-pii",
version: "sha-2aff473ec36f",
digest: "200d22c5e671b89e0ac8b837564c3a27e17ba6eb5bf93c80277966e981cf2b52",
},
OfficialSkillLockEntry {
skill_id: "runx/reflect-digest",
version: "sha-b92263c8a347",
digest: "732a9e98825f5eb36827884fdedb68b01a08bd23494f48c0568980e7b9469fe6",
},
OfficialSkillLockEntry {
skill_id: "runx/refund",
version: "sha-4271ef5da656",
digest: "1295dd1950b137f828319d3d56491241ba8629c56ede9e50a736e61e96dd1a9a",
},
OfficialSkillLockEntry {
skill_id: "runx/release",
version: "sha-99c592a9161d",
digest: "20b8f78fee305165f010e501d5349897a384f323a1b98dbef864dbbc763c5a07",
},
OfficialSkillLockEntry {
skill_id: "runx/research",
version: "sha-65df55554027",
digest: "4c729e750abddc00379902686439d90965e7c593b6bcb3606ef7e0bc66cecd66",
},
OfficialSkillLockEntry {
skill_id: "runx/review-receipt",
version: "sha-a24882594b28",
digest: "88e529e362d21e05cc31f47be240e91aae352e10cf3e321e9de864bb272af5c8",
},
OfficialSkillLockEntry {
skill_id: "runx/review-skill",
version: "sha-622805df5ff3",
digest: "6fc1b341d55e3c6be8a5f7693dfe3312654b89a14f88fe42e4ffc84a65a9cd09",
},
OfficialSkillLockEntry {
skill_id: "runx/run-history-analyst",
version: "sha-0ec78eb20018",
digest: "1a1441365a20b74442998656478fc3d530f2d09f25f811d970b403a8a7920df4",
},
OfficialSkillLockEntry {
skill_id: "runx/sandbox-harden",
version: "sha-e5f346fbac0f",
digest: "15676f191d6878edf96006b006ad78dda6c53f5128f7e3e84fa346941a635fdc",
},
OfficialSkillLockEntry {
skill_id: "runx/send-as",
version: "sha-37e798437c61",
digest: "ee71759e8099dba9a4925a81b2da69c1d83e73a6fd57b3e21839a6bb637e9ca1",
},
OfficialSkillLockEntry {
skill_id: "runx/settle-invoice",
version: "sha-dff8399d530f",
digest: "f016ad099d4777d37e06bd3ca5412293166bee4fa15fba8eba1ffab77f729246",
},
OfficialSkillLockEntry {
skill_id: "runx/sign-receipt",
version: "sha-03e0b8268637",
digest: "fc5e848c9a8a1e7ae22de8839789ad949038e2cf699081c1cbeab116bfd73e6a",
},
OfficialSkillLockEntry {
skill_id: "runx/skill-lab",
version: "sha-274b0e06d901",
digest: "46d70be92a655c20e47b4cd8674b2e19d1d4257029a073319805c4235bdc6441",
},
OfficialSkillLockEntry {
skill_id: "runx/skill-testing",
version: "sha-9113dacaa62a",
digest: "93f7a0c009e289862fcc9236effdf0ac75197e9eb042a83200720d23d01cb443",
},
OfficialSkillLockEntry {
skill_id: "runx/slack-notify",
version: "sha-33d69b8fb325",
digest: "9e0abd47c54455add3c715e18c371c427e0bbb0d617ed0212f60d766f62c2856",
},
OfficialSkillLockEntry {
skill_id: "runx/sourcey",
version: "sha-0ddf49779321",
digest: "4b6316c7fbb323b7d27d304deb8f11cb8f939dc31e0b74349d56f27abf618504",
},
OfficialSkillLockEntry {
skill_id: "runx/spend",
version: "sha-6599445d02b3",
digest: "4b9810ee99bbbc58e467547595e0cdb7d67ad117f8cbba422b6e6e5e2b065fc5",
},
OfficialSkillLockEntry {
skill_id: "runx/sql-analyst",
version: "sha-95e6fba89c33",
digest: "054798d4b29958f90300ea940c94b73233c0d5c5ff19e7156278b31e99e68475",
},
OfficialSkillLockEntry {
skill_id: "runx/stripe-charge",
version: "sha-fac92c49fa9b",
digest: "34b04a5ba67c0de4e682519cd1a6c160e097a08b3c5eaf4537441e709d3ba982",
},
OfficialSkillLockEntry {
skill_id: "runx/stripe-pay",
version: "sha-36ed79109851",
digest: "cd0f34e02d6d5e89df53acaf3bc20c85141a97c681f9d32a08b041818c8ff0ca",
},
OfficialSkillLockEntry {
skill_id: "runx/stripe-refund",
version: "sha-e513d3aed77c",
digest: "2bfa94189cd3b7084a3b29e1f83de2d0787d28c5f0c962a15bac76155c24d95f",
},
OfficialSkillLockEntry {
skill_id: "runx/structured-extraction",
version: "sha-22eeb86d17f4",
digest: "2c83db0c1f170af2e84ca0237e0850108254415bdcffdc57d2a6e66197cef133",
},
OfficialSkillLockEntry {
skill_id: "runx/support-triage-reply",
version: "sha-93233458fd14",
digest: "5c6fc18bf3013a1845de83641147f8421ceb1599269e4b3ed111d25e75053fda",
},
OfficialSkillLockEntry {
skill_id: "runx/taste-profile",
version: "sha-30ae4695f7a2",
digest: "bebc7d42b982295105d1da03ea392f1384977269adf1705905e1833e73dc78ae",
},
OfficialSkillLockEntry {
skill_id: "runx/vault-unseal",
version: "sha-15cd18f5b44e",
digest: "0c2210ff956c0fca388ff3829f31946aa21e02626ee3ae29aee41ff94dd3cc10",
},
OfficialSkillLockEntry {
skill_id: "runx/vuln-scan",
version: "sha-71f8b23b780a",
digest: "a42e03ed700f4c60895ee46883adaa30a82890f3a82798a82d1d1c21ca73181a",
},
OfficialSkillLockEntry {
skill_id: "runx/weather-forecast",
version: "sha-498fe9afa450",
digest: "2d104a7c806819c53c62f475e5d44e21ebefd940302a0b15b268721a5ee7f426",
},
OfficialSkillLockEntry {
skill_id: "runx/web-fetch",
version: "sha-fec9491a67bf",
digest: "9d744ec5179a797007727f63eab50ac5d45b321d07a7de73a31baa2b60e1c5a8",
},
OfficialSkillLockEntry {
skill_id: "runx/work-plan",
version: "sha-e6dd3bc7d087",
digest: "ba007b997503258ca52e6a067e0dd6ed12ec7250add5dae35e048663b2a502a2",
},
OfficialSkillLockEntry {
skill_id: "runx/write-harness",
version: "sha-f69b01f883e0",
digest: "8fbac78e4c760a124c704ce62aa11ecb8b65b165c72a81fd2c1de163c5bb259b",
},
OfficialSkillLockEntry {
skill_id: "runx/x402-pay",
version: "sha-008aef3f3b2e",
digest: "18e4e8c85606f201463d29f4aca8cf910f84293a720a68b2090bd0df1544a62c",
},
OfficialSkillLockEntry {
skill_id: "runx/zapier-handoff",
version: "sha-81a7bdb12d33",
digest: "6f339f817a8d17d3a5a51e4676ef6a310278228fb9f97e260908c28882af18ed",
},
];
pub(crate) fn official_skill_entry_by_name(name: &str) -> Option<&'static OfficialSkillLockEntry> {
let normalized = name.trim();
OFFICIAL_SKILLS.iter().find(|entry| {
entry.skill_id == normalized
|| entry
.skill_id
.strip_prefix("runx/")
.is_some_and(|skill_name| skill_name == normalized)
})
}