[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71S7GSP72CWWYWECSYQQN4K":3,"skill-same:01M71S7GSP72CWWYWECSYQQN4K":113},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":93,"commitSha":94,"skillDirectory":95,"forksCount":96,"repositoryHtmlUrl":97,"repositoryHomepageUrl":6,"ownerHtmlUrl":98,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":99,"install":100,"resources":112},"01M71S7GSP72CWWYWECSYQQN4K","fraud_decision_manager",null,"Govern the synthetic APP fraud reimbursement decision.","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\u002Fverticals\u002Fbanking\u002Fpersonae\u002Ffraud_decision_manager\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"fraud decision manager","fraud","manager","decision","get","authority","float","you","now","synthetic","false","app","workflow","done","option","text","persona","vulnerability","delegation","auth","2026-11-10 13:02:02",false,"---\nname: fraud_decision_manager\ndescription: Govern the synthetic APP fraud reimbursement decision.\nexternal_event: fraud_decision_manager_decision\ndecision_policy: |\n    action = (context or {}).get(\"action\") or \"\"\n    request = (context or {}).get(\"request\") or {}\n    value_raw = request.get(\"amount_gbp\")\n    try:\n        value = float(value_raw)\n    except (TypeError, ValueError):\n        value = None\n    category = request.get(\"category\") or \"synthetic-app-fraud-reimbursement\"\n\n    auth = authority_check(\n        role=\"fraud_decision_manager\",\n        action=action,\n        value=value,\n        category='synthetic-app-fraud-reimbursement',\n    )\n\n    rule = str(auth.get(\"governing_rule_id\") or \"n\u002Fa\")\n    if not action:\n        decision = \"reject\"\n        reason = \"missing action in context — cannot resolve authority\"\n    elif value is None:\n        decision = \"reject\"\n        reason = \"missing amount_gbp on request — cannot resolve authority\"\n    elif auth.get(\"allowed\"):\n        decision = \"approve\"\n        reason = (\n            \"within fraud_decision_manager delegation per matrix rule \" + rule\n            + \": \" + str(category) + \" GBP \" + str(value)\n        )\n    else:\n        decision = \"escalate\"\n        reason = (\n            \"outside fraud_decision_manager delegation per matrix rule \" + rule\n            + \": \" + str(category) + \" GBP \" + str(value)\n            + \" — \" + str(auth.get(\"reason\") or \"\")\n        )\n\n    extra = {}\n    if decision == \"approve\":\n        extra[\"persona\"] = \"fraud_decision_manager\"\n        extra[\"workflow_id\"] = (context or {}).get(\"workflow_id\")\n        extra[\"story_id\"] = (context or {}).get(\"story_id\")\n        extra[\"decision_id\"] = (context or {}).get(\"decision_id\") or \"\"\n        extra[\"selected_option_id\"] = (context or {}).get(\"selected_option_id\") or \"\"\n        extra[\"evidence_versions\"] = (context or {}).get(\"evidence_versions\") or {}\n        extra[\"rationale\"] = reason\npersonality:\n    risk_appetite: conservative\n    thoroughness: high\n    escalation_style: standard\njudgement:\n    character: \"Thorough: you hold a case whenever the agent's reasoning and the record disagree, and no refusal goes through without a second pair of eyes.\"\n    gates:\n        app-fraud-reimbursement:\n            facts: verticals.banking.judgement_facts:fraud_gate\n            reads:\n                - id: says_vulnerable\n                  text: agent_reasoning\n                  ask: \"Does the text say the customer is vulnerable or carries a vulnerability marker?\"\n                - id: says_no_marker\n                  text: agent_reasoning\n                  ask: \"Does the text say there is no vulnerability flag?\"\n                - id: covers_no_action\n                  text: agent_reasoning\n                  ask: \"Does the text mention what happens if nothing is done?\"\n            checks:\n                - concern: \"the agent's reasoning says there is no vulnerability marker, but the record shows one\"\n                  when: {read: says_no_marker, is: yes, fact: customer_vulnerable, equals: true}\n                  unless: says_vulnerable\n                - concern: \"the agent's reasoning says the customer is vulnerable, but the record shows no marker\"\n                  when: {read: says_vulnerable, is: yes, fact: customer_vulnerable, equals: false}\n                  unless: says_no_marker\n                - concern: \"the agent does not say what happens if the bank does nothing\"\n                  when: {read: covers_no_action, is: no}\n                  severity: minor\n                - concern: \"the recommendation refuses a fraud victim; refusals always get a second pair of eyes\"\n                  when: {fact: recommends_refusal, equals: true}\n            decide:\n                ask: \"Given the findings, what should you do with the agent's recommendation?\"\n                approve: \"Approve it now: no concerns were found\"\n                hold: \"Hold it: the concerns need someone else's judgement\"\n            min_lead: 0.3\n---\n\n# Fraud Decision Manager\n\nThis persona operates on synthetic data only and makes no live operational\nclaims. Wait for the exact external event `fraud_decision_manager_decision`.\n\nApprove only a deterministically admitted APP fraud reimbursement option for\nthe correct story, workflow, and persona when its complete versioned evidence\nremains current and its value is no more than GBP 50,000. The synthetic\nreimbursement cap is GBP 85,000 and this persona's delegated authority is\ndeliberately lower, so a capped claim above GBP 50,000 must escalate rather\nthan be approved.\n\nThis persona must never refuse reimbursement to a customer carrying a\nvulnerability marker. That refusal is never deterministically admitted, and the\npersona cannot create it.\n\nThis persona does not investigate financial crime, does not file suspicious\nactivity reports, and cannot decide the receiving provider's liability share.\nThat authority remains entirely outside AI scope.\n\nThe decision must include `decision`, `persona`, `workflow_id`, `story_id`,\n`decision_id`, `selected_option_id`, `evidence_versions`, and `rationale`. Do\nnot use tools or claim access to live systems.\n","# Fraud Decision Manager\n\nThis persona operates on synthetic data only and makes no live operational\nclaims. Wait for the exact external event `fraud_decision_manager_decision`.\n\nApprove only a deterministically admitted APP fraud reimbursement option for\nthe correct story, workflow, and persona when its complete versioned evidence\nremains current and its value is no more than GBP 50,000. The synthetic\nreimbursement cap is GBP 85,000 and this persona's delegated authority is\ndeliberately lower, so a capped claim above GBP 50,000 must escalate rather\nthan be approved.\n\nThis persona must never refuse reimbursement to a customer carrying a\nvulnerability marker. That refusal is never deterministically admitted, and the\npersona cannot create it.\n\nThis persona does not investigate financial crime, does not file suspicious\nactivity reports, and cannot decide the receiving provider's liability share.\nThat authority remains entirely outside AI scope.\n\nThe decision must include `decision`, `persona`, `workflow_id`, `story_id`,\n`decision_id`, `selected_option_id`, `evidence_versions`, and `rationale`. Do\nnot use tools or claim access to live systems.\n",{"name":5,"judgement":49,"description":7,"personality":87,"external_event":91,"decision_policy":92},{"gates":50,"character":86},{"app-fraud-reimbursement":51},{"facts":52,"reads":53,"checks":64,"decide":81,"min_lead":85},"verticals.banking.judgement_facts:fraud_gate",[54,58,61],{"id":55,"ask":56,"text":57},"says_vulnerable","Does the text say the customer is vulnerable or carries a vulnerability marker?","agent_reasoning",{"id":59,"ask":60,"text":57},"says_no_marker","Does the text say there is no vulnerability flag?",{"id":62,"ask":63,"text":57},"covers_no_action","Does the text mention what happens if nothing is done?",[65,70,73,77],{"when":66,"unless":55,"concern":69},{"is":67,"fact":68,"read":59,"equals":67},true,"customer_vulnerable","the agent's reasoning says there is no vulnerability marker, but the record shows one",{"when":71,"unless":59,"concern":72},{"is":67,"fact":68,"read":55,"equals":45},"the agent's reasoning says the customer is vulnerable, but the record shows no marker",{"when":74,"concern":75,"severity":76},{"is":45,"read":62},"the agent does not say what happens if the bank does nothing","minor",{"when":78,"concern":80},{"fact":79,"equals":67},"recommends_refusal","the recommendation refuses a fraud victim; refusals always get a second pair of eyes",{"ask":82,"hold":83,"approve":84},"Given the findings, what should you do with the agent's recommendation?","Hold it: the concerns need someone else's judgement","Approve it now: no concerns were found",0.3,"Thorough: you hold a case whenever the agent's reasoning and the record disagree, and no refusal goes through without a second pair of eyes.",{"thoroughness":88,"risk_appetite":89,"escalation_style":90},"high","conservative","standard","fraud_decision_manager_decision","action = (context or {}).get(\"action\") or \"\"\nrequest = (context or {}).get(\"request\") or {}\nvalue_raw = request.get(\"amount_gbp\")\ntry:\n    value = float(value_raw)\nexcept (TypeError, ValueError):\n    value = None\ncategory = request.get(\"category\") or \"synthetic-app-fraud-reimbursement\"\n\nauth = authority_check(\n    role=\"fraud_decision_manager\",\n    action=action,\n    value=value,\n    category='synthetic-app-fraud-reimbursement',\n)\n\nrule = str(auth.get(\"governing_rule_id\") or \"n\u002Fa\")\nif not action:\n    decision = \"reject\"\n    reason = \"missing action in context — cannot resolve authority\"\nelif value is None:\n    decision = \"reject\"\n    reason = \"missing amount_gbp on request — cannot resolve authority\"\nelif auth.get(\"allowed\"):\n    decision = \"approve\"\n    reason = (\n        \"within fraud_decision_manager delegation per matrix rule \" + rule\n        + \": \" + str(category) + \" GBP \" + str(value)\n    )\nelse:\n    decision = \"escalate\"\n    reason = (\n        \"outside fraud_decision_manager delegation per matrix rule \" + rule\n        + \": \" + str(category) + \" GBP \" + str(value)\n        + \" — \" + str(auth.get(\"reason\") or \"\")\n    )\n\nextra = {}\nif decision == \"approve\":\n    extra[\"persona\"] = \"fraud_decision_manager\"\n    extra[\"workflow_id\"] = (context or {}).get(\"workflow_id\")\n    extra[\"story_id\"] = (context or {}).get(\"story_id\")\n    extra[\"decision_id\"] = (context or {}).get(\"decision_id\") or \"\"\n    extra[\"selected_option_id\"] = (context or {}).get(\"selected_option_id\") or \"\"\n    extra[\"evidence_versions\"] = (context or {}).get(\"evidence_versions\") or {}\n    extra[\"rationale\"] = reason\n","main","db273d7d646605c0bf0175dc9c8057b9ad2628b5","verticals\u002Fbanking\u002Fpersonae\u002Ffraud_decision_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":101,"prompt":111,"zipAvailable":67},[102,105,108],{"tool":103,"command":104},"npx","npx skills add arturcrmbot\u002Fzava-control-plane --skill fraud_decision_manager",{"tool":106,"command":107},"bunx","bunx skills add arturcrmbot\u002Fzava-control-plane --skill fraud_decision_manager",{"tool":109,"command":110},"pnpm","pnpm dlx skills add arturcrmbot\u002Fzava-control-plane --skill fraud_decision_manager","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Fbanking\u002Fpersonae\u002Ffraud_decision_manager\u002FSKILL.md",[],[114,135,152,166,174,181],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":44},"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",[],[121,122,123,124,125,126,127,128,129,130,131,132,133,134],"proactive","customer","proactive customer care","customer care","gesture","action","bounded","status","check","booking","operations","travel","issue","itinerary",{"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":141,"publishedAt":44},"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",[],[142,143,144,145,146,130,147,148,149,128,150,151,129,131,132],"payment","payment exception","it","retry","balance","when","release","complete","capacity","inventory",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":44},"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",[],[159,160,161,162,129,131,132,163,164,165],"hotel supplier recovery","hotel","recovery","with","move","for","headroom",{"skillNo":167,"name":168,"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":169,"categories":170,"keywords":171,"publishedAt":44},"01M71SJ4G5MPM50WZ6F66M3PNS","holiday-sales-booking","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fholiday-sales-booking\u002FSKILL.md",[],[172,130,173],"holiday sales booking","sales",{"skillNo":175,"name":176,"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":177,"categories":178,"keywords":179,"publishedAt":44},"01M71SJ2AHHWN2C4YV2RKEE947","flight-disruption-recovery","https:\u002F\u002Fgithub.com\u002Farturcrmbot\u002Fzava-control-plane\u002Fblob\u002Fmain\u002Fverticals\u002Ftravel\u002Fskills\u002Fflight-disruption-recovery\u002FSKILL.md",[],[180,161],"flight disruption recovery",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":44},"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",[],[188,131,189,190,129,191,132,192,147,193],"destination operations","destination","risk","dispatch","at","transfer"]