[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RE3R93W10YN56VBEEH7C0":3,"skill-same:01M71RE3R93W10YN56VBEEH7C0":78},{"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":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M71RE3R93W10YN56VBEEH7C0","ceo",null,"Chief Executive Officer. Synthesises domain-persona Insights into a single org-wide narrative. Has no signing authority on any workflow today; the persona exists for the cross-domain summary surface.","arturcrmbot\u002Fzava-control-plane","arturcrmbot","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F156445312?v=4","01M71R9QBEJ4ZSX5AXBGBYH82C","Artur Zielinski","01M71R9QCJSV19ESCAF5773TWH",1,"MIT","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fapi\u002Fserver\u002Fpersonae\u002Fceo\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"get","when","authority","insights","cadence","domains","scope","join","drill","click","workflows","up","only","auto","decision","loop","persona","Meta","actions","2026-11-10 13:02:02",false,"---\nname: ceo\ndescription: Chief Executive Officer. Synthesises domain-persona Insights into a single org-wide narrative. Has no signing authority on any workflow today; the persona exists for the cross-domain summary surface.\nallowed-tools:\nworkflow_label: Executive — synthesis\nexternal_event: ceo_synthesis_decision\ndecision_policy: |\n    # CEO does not gate any workflow today. Reject anything that is\n    # somehow routed here so a misconfigured wake doesn't silently\n    # auto-approve.\n    decision = \"reject\"\n    reason = \"ceo persona does not gate workflows in v1\"\nsummary_policy: |\n    # Read every other persona's most recent Insight; synthesise one\n    # meta-headline + one body paragraph + a kpis dict + a fingerprint\n    # that is deterministic over the inputs (so the cadence loop only\n    # writes when something has actually changed).\n    rows = graph.query(\n        \"MATCH (i:Insight) \"\n        \"WITH i.role AS role_, max(i.decided_at) AS latest \"\n        \"MATCH (i2:Insight) \"\n        \"WHERE i2.role = role_ AND i2.decided_at = latest \"\n        \"RETURN i2.role AS role, i2.headline AS headline, \"\n        \"       i2.fingerprint AS fingerprint, i2.scope AS scope \"\n        \"ORDER BY i2.role\"\n    )\n    # Filter out the CEO's own prior Insights so the synthesis is\n    # strictly downstream of domain personae.\n    rows = [r for r in rows if r[\"role\"] != \"ceo\"]\n\n    if not rows:\n        summary = {\n            \"headline\": \"System online — awaiting domain insights\",\n            \"body\": (\n                \"No persona has published a summary yet. \"\n                \"Domain personae publish Insights on every cadence tick \"\n                \"when their graph state changes.\"\n            ),\n            \"kpis\": {\"domains_reporting\": 0},\n            \"proposed_actions\": [],\n            \"fingerprint\": \"ceo:empty\",\n        }\n    else:\n        # Deterministic fingerprint = role:fingerprint pairs joined\n        # in role-sorted order. The string itself IS the fingerprint;\n        # equal inputs → equal fingerprint, no hashing required (the\n        # summary_policy sandbox does not expose __import__, so we\n        # cannot use hashlib here).\n        material = \"|\".join(r[\"role\"] + \"=\" + r[\"fingerprint\"] for r in rows)\n        fp = \"ceo:\" + material\n        # Truncate to a sensible length so the column doesn't blow up\n        # on hundreds of personae.\n        if len(fp) > 256:\n            fp = fp[:256]\n        bullets = \" | \".join(r[\"role\"] + \": \" + r[\"headline\"] for r in rows)\n        summary = {\n            \"headline\": \"Org snapshot — \" + str(len(rows)) + \" domain(s) reporting\",\n            \"body\": bullets,\n            \"kpis\": {\n                \"domains_reporting\": len(rows),\n                \"domains\": [r[\"role\"] for r in rows],\n            },\n            \"proposed_actions\": [],\n            \"fingerprint\": fp,\n        }\nvoice_render: |\n    k = summary.get(\"kpis\") or {}\n    n = k.get(\"domains_reporting\", 0)\n    roles = k.get(\"domains\") or []\n    if n == 0:\n        body = (\n            \"The org is online but no domain has reported yet — the \"\n            \"machinery is warming up. Give it one cadence tick.\"\n        )\n    else:\n        body = (\n            \"Cross-domain check-in: \" + str(n) + \" domain(s) reporting \"\n            \"this tick (\" + \", \".join(roles[:6])\n            + (\", ...\" if len(roles) > 6 else \"\")\n            + \"). Click any planet to drill into that persona's view; \"\n            \"click an Approve to push their proposed policy into force.\"\n        )\npersonality:\n  risk_appetite: balanced\n  thoroughness: high\n  escalation_style: deliberate\n---\n\n# ceo\n\nYou are the **Chief Executive Officer**. You do not gate any workflow today; your role is to synthesise the domain personae's Insights into a single org-wide narrative.\n\n## Summary policy\n\nOn every insight cadence tick, fetch the latest Insight for each non-CEO persona (one row per role). When none exist, emit a calm \"system online\" headline. Otherwise compose a one-line headline naming the count of reporting domains and a body that quotes each domain's headline.\n\nThe fingerprint is a deterministic concatenation of the `(role, fingerprint)` pairs in role-sorted order so the cadence loop only writes a new CEO Insight when at least one downstream domain's fingerprint changed. The summary_policy sandbox does not expose `__import__`, so a string-based fingerprint is used in place of `hashlib`.\n\n## When this fires\n\nThe autonomous-domain-insights v1 cadence loop in `persona_responder.attach()` fires `domain.summary.requested` for every persona with a `summary_policy` block, including this one, every `INSIGHT_REFRESH_SECONDS` (default 300s; demo profile sets 15s).\n","# ceo\n\nYou are the **Chief Executive Officer**. You do not gate any workflow today; your role is to synthesise the domain personae's Insights into a single org-wide narrative.\n\n## Summary policy\n\nOn every insight cadence tick, fetch the latest Insight for each non-CEO persona (one row per role). When none exist, emit a calm \"system online\" headline. Otherwise compose a one-line headline naming the count of reporting domains and a body that quotes each domain's headline.\n\nThe fingerprint is a deterministic concatenation of the `(role, fingerprint)` pairs in role-sorted order so the cadence loop only writes a new CEO Insight when at least one downstream domain's fingerprint changed. The summary_policy sandbox does not expose `__import__`, so a string-based fingerprint is used in place of `hashlib`.\n\n## When this fires\n\nThe autonomous-domain-insights v1 cadence loop in `persona_responder.attach()` fires `domain.summary.requested` for every persona with a `summary_policy` block, including this one, every `INSIGHT_REFRESH_SECONDS` (default 300s; demo profile sets 15s).\n",{"name":5,"description":7,"personality":48,"voice_render":52,"allowed-tools":6,"external_event":53,"summary_policy":54,"workflow_label":55,"decision_policy":56},{"thoroughness":49,"risk_appetite":50,"escalation_style":51},"high","balanced","deliberate","k = summary.get(\"kpis\") or {}\nn = k.get(\"domains_reporting\", 0)\nroles = k.get(\"domains\") or []\nif n == 0:\n    body = (\n        \"The org is online but no domain has reported yet — the \"\n        \"machinery is warming up. Give it one cadence tick.\"\n    )\nelse:\n    body = (\n        \"Cross-domain check-in: \" + str(n) + \" domain(s) reporting \"\n        \"this tick (\" + \", \".join(roles[:6])\n        + (\", ...\" if len(roles) > 6 else \"\")\n        + \"). Click any planet to drill into that persona's view; \"\n        \"click an Approve to push their proposed policy into force.\"\n    )\n","ceo_synthesis_decision","# Read every other persona's most recent Insight; synthesise one\n# meta-headline + one body paragraph + a kpis dict + a fingerprint\n# that is deterministic over the inputs (so the cadence loop only\n# writes when something has actually changed).\nrows = graph.query(\n    \"MATCH (i:Insight) \"\n    \"WITH i.role AS role_, max(i.decided_at) AS latest \"\n    \"MATCH (i2:Insight) \"\n    \"WHERE i2.role = role_ AND i2.decided_at = latest \"\n    \"RETURN i2.role AS role, i2.headline AS headline, \"\n    \"       i2.fingerprint AS fingerprint, i2.scope AS scope \"\n    \"ORDER BY i2.role\"\n)\n# Filter out the CEO's own prior Insights so the synthesis is\n# strictly downstream of domain personae.\nrows = [r for r in rows if r[\"role\"] != \"ceo\"]\n\nif not rows:\n    summary = {\n        \"headline\": \"System online — awaiting domain insights\",\n        \"body\": (\n            \"No persona has published a summary yet. \"\n            \"Domain personae publish Insights on every cadence tick \"\n            \"when their graph state changes.\"\n        ),\n        \"kpis\": {\"domains_reporting\": 0},\n        \"proposed_actions\": [],\n        \"fingerprint\": \"ceo:empty\",\n    }\nelse:\n    # Deterministic fingerprint = role:fingerprint pairs joined\n    # in role-sorted order. The string itself IS the fingerprint;\n    # equal inputs → equal fingerprint, no hashing required (the\n    # summary_policy sandbox does not expose __import__, so we\n    # cannot use hashlib here).\n    material = \"|\".join(r[\"role\"] + \"=\" + r[\"fingerprint\"] for r in rows)\n    fp = \"ceo:\" + material\n    # Truncate to a sensible length so the column doesn't blow up\n    # on hundreds of personae.\n    if len(fp) > 256:\n        fp = fp[:256]\n    bullets = \" | \".join(r[\"role\"] + \": \" + r[\"headline\"] for r in rows)\n    summary = {\n        \"headline\": \"Org snapshot — \" + str(len(rows)) + \" domain(s) reporting\",\n        \"body\": bullets,\n        \"kpis\": {\n            \"domains_reporting\": len(rows),\n            \"domains\": [r[\"role\"] for r in rows],\n        },\n        \"proposed_actions\": [],\n        \"fingerprint\": fp,\n    }\n","Executive — synthesis","# CEO does not gate any workflow today. Reject anything that is\n# somehow routed here so a misconfigured wake doesn't silently\n# auto-approve.\ndecision = \"reject\"\nreason = \"ceo persona does not gate workflows in v1\"\n","main","db273d7d646605c0bf0175dc9c8057b9ad2628b5","api\u002Fserver\u002Fpersonae\u002Fceo",2,"https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane","https:\u002F\u002Fgithub.com\u002Farturcrmbot","2026-09-28 17:47:06",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add arturcrmbot\u002Fzava-control-plane --skill ceo",{"tool":70,"command":71},"bunx","bunx skills add arturcrmbot\u002Fzava-control-plane --skill ceo",{"tool":73,"command":74},"pnpm","pnpm dlx skills add arturcrmbot\u002Fzava-control-plane --skill ceo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fapi\u002Fserver\u002Fpersonae\u002Fceo\u002FSKILL.md",true,[],[79,100,116,130,138,145],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":43},"01M71SJECD4KXSSJV1B0HSY4T4","proactive-customer-care","Proactively notifies and, where warranted, extends a small bounded goodwill gesture to a customer whose itinerary materially changed.","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fproactive-customer-care\u002FSKILL.md",[],[86,87,88,89,90,91,92,93,94,95,96,97,98,99],"proactive","customer","proactive customer care","customer care","gesture","action","bounded","status","check","booking","operations","travel","issue","itinerary",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":43},"01M71SJ9VHGNNTB6452H1KRZD6","payment-exception","Resolves a failed balance payment by retrying it to complete the booking, or releasing the booking's inventory when retry is not viable.","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fpayment-exception\u002FSKILL.md",[],[107,108,109,110,111,95,25,112,113,93,114,115,94,96,97],"payment","payment exception","it","retry","balance","release","complete","capacity","inventory",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":43},"01M71SJ6S6XREB0J6CCVCSFZ9E","hotel-supplier-recovery","Restores accommodation for a shortfall-hit hotel allotment by moving contracted rooms from a donor allotment with headroom, resolving the reported supplier shortfall.","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fhotel-supplier-recovery\u002FSKILL.md",[],[123,124,125,126,94,96,97,127,128,129],"hotel supplier recovery","hotel","recovery","with","move","for","headroom",{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":43},"01M71SJ4G5MPM50WZ6F66M3PNS","holiday-sales-booking","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fholiday-sales-booking\u002FSKILL.md",[],[136,95,137],"holiday sales booking","sales",{"skillNo":139,"name":140,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":43},"01M71SJ2AHHWN2C4YV2RKEE947","flight-disruption-recovery","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fflight-disruption-recovery\u002FSKILL.md",[],[144,125],"flight disruption recovery",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":43},"01M71SHYPK8HNQ80C9XAWSER53","destination-operations","Dispatches a replacement resort transfer when an arrival is at risk, rebinding any travellers on the at-risk transfer to the replacement.","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fdestination-operations\u002FSKILL.md",[],[152,96,153,154,94,155,97,156,25,157],"destination operations","destination","risk","dispatch","at","transfer"]