[{"data":1,"prerenderedAt":462},["ShallowReactive",2],{"navigation_docs":3,"-quayel-gateway-ai-skill":91,"-quayel-gateway-ai-skill-surround":457},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":90},"Quayel Gateway","i-lucide-network","\u002Fquayel-gateway","quayel-gateway",[10,29,68],{"title":11,"icon":12,"path":13,"stem":14,"children":15},"Getting Started","i-lucide-rocket","\u002Fquayel-gateway\u002Fgetting-started","quayel-gateway\u002F01.getting-started\u002Findex",[16,19,24],{"title":17,"path":13,"stem":14,"icon":18},"Introduction","i-lucide-book-open",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fquayel-gateway\u002Fgetting-started\u002Finstallation","quayel-gateway\u002F01.getting-started\u002F1.installation","i-lucide-container",{"title":25,"path":26,"stem":27,"icon":28},"Project Structure","\u002Fquayel-gateway\u002Fgetting-started\u002Fproject-structure","quayel-gateway\u002F01.getting-started\u002F2.project-structure","i-lucide-folder-tree",{"title":30,"icon":31,"path":32,"stem":33,"children":34},"Plugins","i-lucide-puzzle","\u002Fquayel-gateway\u002Fplugins","quayel-gateway\u002F02.plugins\u002Findex",[35,38,43,48,53,58,63],{"title":36,"path":32,"stem":33,"icon":37},"Overview","i-lucide-workflow",{"title":39,"path":40,"stem":41,"icon":42},"IP Intelligence","\u002Fquayel-gateway\u002Fplugins\u002Fip-intel","quayel-gateway\u002F02.plugins\u002F1.ip-intel","i-lucide-radar",{"title":44,"path":45,"stem":46,"icon":47},"Firewall","\u002Fquayel-gateway\u002Fplugins\u002Ffirewall","quayel-gateway\u002F02.plugins\u002F2.firewall","i-lucide-shield",{"title":49,"path":50,"stem":51,"icon":52},"Rate Limiting","\u002Fquayel-gateway\u002Fplugins\u002Frate-limiting","quayel-gateway\u002F02.plugins\u002F3.rate-limiting","i-lucide-gauge",{"title":54,"path":55,"stem":56,"icon":57},"Cache","\u002Fquayel-gateway\u002Fplugins\u002Fcache","quayel-gateway\u002F02.plugins\u002F4.cache","i-lucide-database",{"title":59,"path":60,"stem":61,"icon":62},"Load Balancer","\u002Fquayel-gateway\u002Fplugins\u002Fload-balancer","quayel-gateway\u002F02.plugins\u002F5.load-balancer","i-lucide-scale",{"title":64,"path":65,"stem":66,"icon":67},"Auto-SSL","\u002Fquayel-gateway\u002Fplugins\u002Fauto-ssl","quayel-gateway\u002F02.plugins\u002F6.auto-ssl","i-lucide-lock",{"title":69,"icon":70,"path":71,"stem":72,"children":73},"AI","i-lucide-bot","\u002Fquayel-gateway\u002Fai","quayel-gateway\u002F03.ai\u002Findex",[74,75,80,85],{"title":36,"path":71,"stem":72,"icon":70},{"title":76,"path":77,"stem":78,"icon":79},"The Quayel Gateway Skill","\u002Fquayel-gateway\u002Fai\u002Fskill","quayel-gateway\u002F03.ai\u002F1.skill","i-lucide-wand-sparkles",{"title":81,"path":82,"stem":83,"icon":84},"Installing the Skill","\u002Fquayel-gateway\u002Fai\u002Finstallation","quayel-gateway\u002F03.ai\u002F2.installation","i-lucide-download",{"title":86,"path":87,"stem":88,"icon":89},"AI Agent Guide","\u002Fquayel-gateway\u002Fai\u002Fagent-guide","quayel-gateway\u002F03.ai\u002F3.agent-guide","i-lucide-braces",false,{"id":92,"title":76,"body":93,"description":450,"extension":451,"links":452,"meta":453,"navigation":454,"path":77,"seo":455,"stem":78,"__hash__":456},"docs\u002Fquayel-gateway\u002F03.ai\u002F1.skill.md",{"type":94,"value":95,"toc":440},"minimark",[96,100,129,134,167,171,174,186,194,198,332,336,339,398,402,423,429,433],[97,98,76],"h1",{"id":99},"the-quayel-gateway-skill",[101,102,103,104,114,115,120,121,124,125,128],"p",{},"The skill is a single markdown file — ",[105,106,110],"a",{"href":107,"rel":108},"https:\u002F\u002Fgithub.com\u002Fquayel\u002FQuayel-Gateway\u002Fblob\u002Fmain\u002Fskills\u002Fquayel-gateway\u002FSKILL.md",[109],"nofollow",[111,112,113],"code",{},"skills\u002Fquayel-gateway\u002FSKILL.md"," in the gateway repository — in the ",[105,116,119],{"href":117,"rel":118},"https:\u002F\u002Fagentskills.io",[109],"Agent Skills"," format (YAML frontmatter with ",[111,122,123],{},"name"," + ",[111,126,127],{},"description",", followed by instructions). Drop it into any compatible tool and the agent knows how to configure Quayel Gateway correctly.",[130,131,133],"h2",{"id":132},"what-it-does","What it does",[135,136,137,149,155,161],"ul",{},[138,139,140,144,145,148],"li",{},[141,142,143],"strong",{},"Generates"," complete, valid ",[111,146,147],{},"config.json"," files — required fields, exact snake_case enums, safe defaults",[138,150,151,154],{},[141,152,153],{},"Validates"," before declaring success: syntax check → JSON Schema → the gateway's own parser → smoke test → hot reload",[138,156,157,160],{},[141,158,159],{},"Troubleshoots"," why a rule does (or does not) fire: startup error map, access-log fields, behavior gotchas",[138,162,163,166],{},[141,164,165],{},"Explains"," the pipeline: plugin order, first-match-wins rule semantics, short-circuiting",[130,168,170],{"id":169},"when-the-skill-activates","When the skill activates",[101,172,173],{},"The skill's frontmatter description tells the agent when to use it:",[175,176,177],"blockquote",{},[101,178,179,180,182,183,185],{},"Generate, validate, and troubleshoot Quayel Gateway configs (",[111,181,147],{},"). Use this skill whenever a user asks to proxy\u002Fprotect a service, add rate limits, firewall rules, caching or load balancing, edit a quayel ",[111,184,147],{},", or debug why a quayel rule does or does not fire.",[101,187,188,189,193],{},"So a request like ",[190,191,192],"em",{},"\"put a rate limit on \u002Fapi and block Tor traffic\""," activates the skill without any extra prompting.",[130,195,197],{"id":196},"whats-inside","What's inside",[199,200,201,214],"table",{},[202,203,204],"thead",{},[205,206,207,211],"tr",{},[208,209,210],"th",{},"Section",[208,212,213],{},"Content",[215,216,217,258,268,298,308,322],"tbody",{},[205,218,219,225],{},[220,221,222],"td",{},[141,223,224],{},"1. Non-negotiables",[220,226,227,228,231,232,231,235,231,238,241,242,245,246,249,250,253,254,257],{},"Required top-level fields; every enum copied exactly (",[111,229,230],{},"operator",", ",[111,233,234],{},"action.type",[111,236,237],{},"algorithm.type",[111,239,240],{},"health_check.mode",", …); hard constraints (firewall rules need ≥1 condition, rate-limit ",[111,243,244],{},"limit","\u002F",[111,247,248],{},"window_seconds"," ≥1, ",[111,251,252],{},"location"," not ",[111,255,256],{},"url"," for redirects)",[205,259,260,265],{},[220,261,262],{},[141,263,264],{},"2. Minimal config",[220,266,267],{},"A copy-paste proxy-everything config with the safe defaults spelled out",[205,269,270,275],{},[220,271,272],{},[141,273,274],{},"3. Condition paths",[220,276,277,278,281,282,285,286,289,290,293,294,297],{},"Every path usable in ",[111,279,280],{},"left",", rate-limit ",[111,283,284],{},"key",", and cache-key parts: ",[111,287,288],{},"req.*",", headers\u002Fcookies\u002Fquery, JWT claims (",[111,291,292],{},"req.header.authorization.jwt.\u003Cclaim.path>","), and all ",[111,295,296],{},"ip.*"," fields",[205,299,300,305],{},[220,301,302],{},[141,303,304],{},"4. Recipes",[220,306,307],{},"Firewall (anonymizers, geo-fence), rate limiting (global + per-IP), cache (static assets with stale windows), load balancing (2 backends, health checks), TLS (on-demand Let's Encrypt)",[205,309,310,315],{},[220,311,312],{},[141,313,314],{},"5. Workflow",[220,316,317,318,321],{},"The six-step validation loop, the authoritative check (",[111,319,320],{},"timeout -k 2 3 .\u002Ftarget\u002Frelease\u002Fquayel-gateway config.json","), and a startup-error → fix map",[205,323,324,329],{},[220,325,326],{},[141,327,328],{},"6. Behavior notes",[220,330,331],{},"Things that surprise people: injected headers, client-IP sourcing behind Cloudflare\u002Fproxies, JSON error bodies, cache status header, in-memory counters",[130,333,335],{"id":334},"how-the-skill-thinks","How the skill thinks",[101,337,338],{},"A few rules are baked into every generated config:",[135,340,341,348,359,370,391],{},[138,342,343,344,347],{},"Plugins run in a fixed pipeline — ",[111,345,346],{},"ip_intel → firewall → rate_limiting → load_balancer → cache → logging"," — and any plugin can short-circuit the request.",[138,349,350,351,354,355,358],{},"Rules ",[141,352,353],{},"inside"," a plugin run in array order, ",[141,356,357],{},"first match wins"," (most specific first).",[138,360,361,362,365,366,369],{},"Firewall rules ",[141,363,364],{},"must"," have at least one condition; rate-limit, cache, and load-balancer rules may use ",[111,367,368],{},"conditions: []"," to match everything.",[138,371,372,373,375,376,379,380,379,383,386,387,390],{},"Enums are snake_case strings copied exactly — ",[111,374,240],{}," is ",[111,377,378],{},"https"," \u002F ",[111,381,382],{},"accepts_connections",[111,384,385],{},"off"," (there is no ",[111,388,389],{},"\"http\""," mode).",[138,392,393,394,397],{},"Every change bumps ",[111,395,396],{},"config_version",".",[130,399,401],{"id":400},"relationship-to-the-ai-agent-guide","Relationship to the AI Agent Guide",[101,403,404,405,408,409,411,412,414,415,418,419,422],{},"The skill is a ",[141,406,407],{},"condensed, portable version"," of the ",[105,410,86],{"href":87},". When the agent is working inside the ",[111,413,8],{}," repository, the skill directs it to read ",[111,416,417],{},"docs\u002Fai-guide.md"," first (and ",[111,420,421],{},"docs\u002Fconfig.schema.json"," for validation) — the guide is verified against the source and wins over other docs.",[101,424,425,426,428],{},"Use the skill for day-to-day configuration from any tool; use the ",[105,427,86],{"href":87}," when you want the complete contract in front of the agent (or your tool has no skills support).",[130,430,432],{"id":431},"next-step","Next step",[434,435,436],"card-group",{},[437,438,439],"card",{"icon":84,"title":81,"to":82},"Add it to Claude Code or any Agent Skills compatible tool in under a minute.",{"title":441,"searchDepth":442,"depth":442,"links":443},"",2,[444,445,446,447,448,449],{"id":132,"depth":442,"text":133},{"id":169,"depth":442,"text":170},{"id":196,"depth":442,"text":197},{"id":334,"depth":442,"text":335},{"id":400,"depth":442,"text":401},{"id":431,"depth":442,"text":432},"A portable Agent Skills package (SKILL.md) that teaches any AI tool to generate, validate, and troubleshoot Quayel Gateway configs.","md",null,{},{"icon":79},{"title":76,"description":450},"BRabiEfxFT0nwYSMDUlvNXjAkhOqmuoWMk-q13Z6VG8",[458,460],{"title":36,"path":71,"stem":72,"description":459,"icon":70,"children":-1},"AI tooling for Quayel Gateway: a portable skill package, an install guide, and a machine-oriented agent contract.",{"title":81,"path":82,"stem":83,"description":461,"icon":84,"children":-1},"Add the Quayel Gateway skill to Claude Code or any Agent Skills compatible tool — project-scoped or user-wide.",1791649767383]