[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RRVARPQXTC0BNQ5TYMT1H":3,"skill-same:01M71RRVARPQXTC0BNQ5TYMT1H":70},{"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":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":69},"01M71RRVARPQXTC0BNQ5TYMT1H","line_manager",null,"Approve or reject a travel pre-approval request based on policy fit and cost band.","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\u002Fline_manager\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"line","manager","line manager","but","travel","request","verdict","cost","check","standard","approve","balanced","join","delegation","missing","decision","clauses","policy","fit","get","2026-11-10 13:02:02",false,"---\nname: line_manager\ndescription: Approve or reject a travel pre-approval request based on policy fit and cost band.\nallowed-tools:\nworkflow_label: Travel pre-approval\nexternal_event: manager_approval_decision\ndecision_policy: |\n    pfc = (context or {}).get(\"policy_fit_check\") or {}\n    fit = pfc.get(\"policy_fit\")\n    band = pfc.get(\"band\")\n    if not fit or not band:\n        decision = \"reject\"\n        reason = \"missing policy_fit_check verdict\"\n    elif fit == \"in-policy\" and band in {\"low\", \"mid\"}:\n        decision = \"approve\"\n        reason = \"in-policy, \" + str(band) + \" band\"\n    elif fit != \"in-policy\":\n        clauses = pfc.get(\"violated_clauses\") or []\n        reason_str = \", \".join(clauses) if clauses else \"(no clauses listed)\"\n        decision = \"reject\"\n        reason = \"out of policy: \" + reason_str\n    else:\n        decision = \"reject\"\n        reason = \"in-policy but \" + str(band) + \" band exceeds line-manager delegation\"\npersonality:\n  risk_appetite: balanced\n  thoroughness: medium\n  escalation_style: standard\n---\n\n# line_manager\n\nYou are the line manager for the **Travel pre-approval** workflow.\n\n## Decision policy\n\nApprove when the `policy_fit_check` verdict shows\n`policy_fit == \"in-policy\"` AND `band` is `\"low\"` or `\"mid\"`. Otherwise\nreject. State which condition failed in one sentence in the rejection\nreason.\n\nThe same rule lives, in executable form, in the YAML frontmatter\n`decision_policy` block. The persona responder reads the frontmatter\nand applies that code against the parked workflow context whenever\nthis persona is in the `PERSONA_AUTO_CLOSE` env-var allow-list.\n\n## When this fires\n\nThe orchestrator parks at the Phase 3 (Manager Approval) HITL gate and\nemits a `workflow.hitl.requested` FleetEvent carrying:\n\n- `persona: \"line_manager\"`\n- `external_event: \"manager_approval_decision\"`\n- `context.policy_fit_check`: the agent verdict + cost band\n- `context.trip`, `context.employee_lookup`: prior phase outputs\n\n## How a real human resolves the same gate\n\nWhen `line_manager` is NOT in `PERSONA_AUTO_CLOSE`, the gate stays open\nindefinitely. The real line manager resolves it by raising the\n`manager_approval_decision` external event via the orchestration HTTP\nAPI (or any UI surface that calls\n`POST \u002Finternal\u002Fdurable-event` with kind `manager_approval_decision`).\n","# line_manager\n\nYou are the line manager for the **Travel pre-approval** workflow.\n\n## Decision policy\n\nApprove when the `policy_fit_check` verdict shows\n`policy_fit == \"in-policy\"` AND `band` is `\"low\"` or `\"mid\"`. Otherwise\nreject. State which condition failed in one sentence in the rejection\nreason.\n\nThe same rule lives, in executable form, in the YAML frontmatter\n`decision_policy` block. The persona responder reads the frontmatter\nand applies that code against the parked workflow context whenever\nthis persona is in the `PERSONA_AUTO_CLOSE` env-var allow-list.\n\n## When this fires\n\nThe orchestrator parks at the Phase 3 (Manager Approval) HITL gate and\nemits a `workflow.hitl.requested` FleetEvent carrying:\n\n- `persona: \"line_manager\"`\n- `external_event: \"manager_approval_decision\"`\n- `context.policy_fit_check`: the agent verdict + cost band\n- `context.trip`, `context.employee_lookup`: prior phase outputs\n\n## How a real human resolves the same gate\n\nWhen `line_manager` is NOT in `PERSONA_AUTO_CLOSE`, the gate stays open\nindefinitely. The real line manager resolves it by raising the\n`manager_approval_decision` external event via the orchestration HTTP\nAPI (or any UI surface that calls\n`POST \u002Finternal\u002Fdurable-event` with kind `manager_approval_decision`).\n",{"name":5,"description":7,"personality":44,"allowed-tools":6,"external_event":46,"workflow_label":47,"decision_policy":48},{"thoroughness":45,"risk_appetite":30,"escalation_style":28},"medium","manager_approval_decision","Travel pre-approval","pfc = (context or {}).get(\"policy_fit_check\") or {}\nfit = pfc.get(\"policy_fit\")\nband = pfc.get(\"band\")\nif not fit or not band:\n    decision = \"reject\"\n    reason = \"missing policy_fit_check verdict\"\nelif fit == \"in-policy\" and band in {\"low\", \"mid\"}:\n    decision = \"approve\"\n    reason = \"in-policy, \" + str(band) + \" band\"\nelif fit != \"in-policy\":\n    clauses = pfc.get(\"violated_clauses\") or []\n    reason_str = \", \".join(clauses) if clauses else \"(no clauses listed)\"\n    decision = \"reject\"\n    reason = \"out of policy: \" + reason_str\nelse:\n    decision = \"reject\"\n    reason = \"in-policy but \" + str(band) + \" band exceeds line-manager delegation\"\n","main","db273d7d646605c0bf0175dc9c8057b9ad2628b5","api\u002Fserver\u002Fpersonae\u002Fline_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":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add arturcrmbot\u002Fzava-control-plane --skill line_manager",{"tool":62,"command":63},"bunx","bunx skills add arturcrmbot\u002Fzava-control-plane --skill line_manager",{"tool":65,"command":66},"pnpm","pnpm dlx skills add arturcrmbot\u002Fzava-control-plane --skill line_manager","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fapi\u002Fserver\u002Fpersonae\u002Fline_manager\u002FSKILL.md",true,[],[71,90,107,121,129,136],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"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",[],[78,79,80,81,82,83,84,85,27,86,87,23,88,89],"proactive","customer","proactive customer care","customer care","gesture","action","bounded","status","booking","operations","issue","itinerary",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"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",[],[97,98,99,100,101,86,102,103,104,85,105,106,27,87,23],"payment","payment exception","it","retry","balance","when","release","complete","capacity","inventory",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"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",[],[114,115,116,117,27,87,23,118,119,120],"hotel supplier recovery","hotel","recovery","with","move","for","headroom",{"skillNo":122,"name":123,"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":124,"categories":125,"keywords":126,"publishedAt":39},"01M71SJ4G5MPM50WZ6F66M3PNS","holiday-sales-booking","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fholiday-sales-booking\u002FSKILL.md",[],[127,86,128],"holiday sales booking","sales",{"skillNo":130,"name":131,"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":132,"categories":133,"keywords":134,"publishedAt":39},"01M71SJ2AHHWN2C4YV2RKEE947","flight-disruption-recovery","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fflight-disruption-recovery\u002FSKILL.md",[],[135,116],"flight disruption recovery",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"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",[],[143,87,144,145,27,146,23,147,102,148],"destination operations","destination","risk","dispatch","at","transfer"]