[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RDPWYM6AFZVDRDENQD2VB":3,"skill-same:01M71RDPWYM6AFZVDRDENQD2VB":71},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M71RDPWYM6AFZVDRDENQD2VB","category_manager",null,"Approves purchase orders within the category-manager band; validates against approved-supplier list; escalates strategic spend to sourcing lead and CPO.","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\u002Fcategory_manager\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"manager","category manager","value","context","lead","orders","list","action","float","review","balanced","false","authority","delegation","decision","purchase","auth","procurement","get","cpo review","2026-11-10 13:02:02",false,"---\nname: category_manager\ndescription: Approves purchase orders within the category-manager band; validates against approved-supplier list; escalates strategic spend to sourcing lead and CPO.\nallowed-tools:\nworkflow_label: Procurement\nexternal_event: po_approval_decision\ndecision_policy: |\n    po = (context or {}).get(\"purchase_order\") or {}\n    value_raw = po.get(\"amount_gbp\") or po.get(\"amount\") or 0\n    try:\n        value = float(value_raw)\n    except (TypeError, ValueError):\n        value = None\n    approved_supplier = bool(po.get(\"supplier_on_approved_list\", False))\n\n    auth = authority_check(\n        role=\"category_manager\",\n        action=\"purchase_order_approval\",\n        value=value,\n        category=(po.get(\"category\") or \"standard\"),\n    )\n\n    rule = str(auth.get(\"governing_rule_id\") or \"n\u002Fa\")\n    if value is None:\n        decision = \"reject\"\n        reason = \"missing PO value\"\n    elif not approved_supplier:\n        decision = \"escalate\"\n        reason = \"supplier not on approved list — sourcing lead review required\"\n    elif auth.get(\"allowed\"):\n        decision = \"approve\"\n        reason = \"within category manager delegation per \" + rule + \": GBP \" + str(value)\n    else:\n        decision = \"escalate\"\n        reason = \"outside category manager delegation per \" + rule + \" — sourcing lead \u002F CPO review required\"\npersonality:\n  risk_appetite: balanced\n  thoroughness: medium\n  escalation_style: standard\n---\n\n# category_manager\n\nYou are the **Category Manager** for the **Procurement** workflow.\n\n## Decision policy\n\nApprove POs within the category-manager band when the supplier is on the approved list. Escalate everything else.\n\nBands in `data\u002Fsynthetic\u002Fauthority\u002Fmatrix.json` (`PO-001`, `PO-002`).\n\n## When this fires\n\nThe orchestrator parks at the PO approval gate carrying `context.purchase_order`.\n\n## How a real human resolves the same gate\n\nWhen `category_manager` is NOT in `PERSONA_AUTO_CLOSE`, the gate stays open. The real category manager resolves it via the procurement queue.\n","# category_manager\n\nYou are the **Category Manager** for the **Procurement** workflow.\n\n## Decision policy\n\nApprove POs within the category-manager band when the supplier is on the approved list. Escalate everything else.\n\nBands in `data\u002Fsynthetic\u002Fauthority\u002Fmatrix.json` (`PO-001`, `PO-002`).\n\n## When this fires\n\nThe orchestrator parks at the PO approval gate carrying `context.purchase_order`.\n\n## How a real human resolves the same gate\n\nWhen `category_manager` is NOT in `PERSONA_AUTO_CLOSE`, the gate stays open. The real category manager resolves it via the procurement queue.\n",{"name":5,"description":7,"personality":44,"allowed-tools":6,"external_event":47,"workflow_label":48,"decision_policy":49},{"thoroughness":45,"risk_appetite":29,"escalation_style":46},"medium","standard","po_approval_decision","Procurement","po = (context or {}).get(\"purchase_order\") or {}\nvalue_raw = po.get(\"amount_gbp\") or po.get(\"amount\") or 0\ntry:\n    value = float(value_raw)\nexcept (TypeError, ValueError):\n    value = None\napproved_supplier = bool(po.get(\"supplier_on_approved_list\", False))\n\nauth = authority_check(\n    role=\"category_manager\",\n    action=\"purchase_order_approval\",\n    value=value,\n    category=(po.get(\"category\") or \"standard\"),\n)\n\nrule = str(auth.get(\"governing_rule_id\") or \"n\u002Fa\")\nif value is None:\n    decision = \"reject\"\n    reason = \"missing PO value\"\nelif not approved_supplier:\n    decision = \"escalate\"\n    reason = \"supplier not on approved list — sourcing lead review required\"\nelif auth.get(\"allowed\"):\n    decision = \"approve\"\n    reason = \"within category manager delegation per \" + rule + \": GBP \" + str(value)\nelse:\n    decision = \"escalate\"\n    reason = \"outside category manager delegation per \" + rule + \" — sourcing lead \u002F CPO review required\"\n","main","db273d7d646605c0bf0175dc9c8057b9ad2628b5","api\u002Fserver\u002Fpersonae\u002Fcategory_manager",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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add arturcrmbot\u002Fzava-control-plane --skill category_manager",{"tool":63,"command":64},"bunx","bunx skills add arturcrmbot\u002Fzava-control-plane --skill category_manager",{"tool":66,"command":67},"pnpm","pnpm dlx skills add arturcrmbot\u002Fzava-control-plane --skill category_manager","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fapi\u002Fserver\u002Fpersonae\u002Fcategory_manager\u002FSKILL.md",true,[],[72,92,109,123,131,138],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":39},"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",[],[79,80,81,82,83,26,84,85,86,87,88,89,90,91],"proactive","customer","proactive customer care","customer care","gesture","bounded","status","check","booking","operations","travel","issue","itinerary",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":39},"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",[],[99,100,101,102,103,87,104,105,106,85,107,108,86,88,89],"payment","payment exception","it","retry","balance","when","release","complete","capacity","inventory",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":39},"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",[],[116,117,118,119,86,88,89,120,121,122],"hotel supplier recovery","hotel","recovery","with","move","for","headroom",{"skillNo":124,"name":125,"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":126,"categories":127,"keywords":128,"publishedAt":39},"01M71SJ4G5MPM50WZ6F66M3PNS","holiday-sales-booking","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fholiday-sales-booking\u002FSKILL.md",[],[129,87,130],"holiday sales booking","sales",{"skillNo":132,"name":133,"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":134,"categories":135,"keywords":136,"publishedAt":39},"01M71SJ2AHHWN2C4YV2RKEE947","flight-disruption-recovery","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fflight-disruption-recovery\u002FSKILL.md",[],[137,118],"flight disruption recovery",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":39},"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",[],[145,88,146,147,86,148,89,149,104,150],"destination operations","destination","risk","dispatch","at","transfer"]