[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M793ZGS4WQ8SZXFWGSFA10GM":3,"skill-same:01M793ZGS4WQ8SZXFWGSFA10GM":58},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":41,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M793ZGS4WQ8SZXFWGSFA10GM","openrouter-common-errors",null,"Diagnose and fix common OpenRouter API errors. Use when encountering error codes, unexpected failures, or debugging API responses. Triggers: 'openrouter error', 'openrouter 401', 'openrouter 429', 'openrouter 402', 'fix openrouter'.","jukeyman\u002Fjukeyman-skills","jukeyman","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142960420?v=4","01M78FR4Y3DHMMCBCC0GXXNB3F","RICK JEFFERSON","01M78FR4Z8RVQRAD31Y5J7V6EB",1,"MIT","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsaas-packs--openrouter-pack--openrouter-common-errors\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: openrouter-common-errors\ndescription: |\n  Diagnose and fix common OpenRouter API errors. Use when encountering error codes, unexpected failures, or debugging API responses. Triggers: 'openrouter error', 'openrouter 401', 'openrouter 429', 'openrouter 402', 'fix openrouter'.\nallowed-tools: Read, Write, Edit, Bash, Grep\nversion: 2.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, openrouter, errors, debugging, troubleshooting]\n---\n# OpenRouter Common Errors\n\n## Overview\n\nOpenRouter returns standard HTTP error codes plus OpenRouter-specific error codes in the response body. The most common: 401 (auth), 402 (credits), 429 (rate limit), 400 (bad request), and 5xx (upstream provider errors). Each error includes a `code` field and a human-readable `message`. This skill covers every common error, its root cause, and the exact fix.\n\n## Complete Error Reference\n\n| HTTP | Error Code | Cause | Fix |\n|------|-----------|-------|-----|\n| 400 | `bad_request` | Malformed request body | Validate `messages` array format; ensure model ID includes provider prefix |\n| 400 | `invalid_model` | Model ID not found | Check model exists: `curl -s https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels \\| jq '.data[].id'` |\n| 400 | `context_length_exceeded` | Prompt + max_tokens > model limit | Reduce prompt size or use a larger-context model |\n| 400 | `invalid_tool_schema` | Tool definition has unsupported types | Use basic JSON Schema types only (string, number, boolean, object, array) |\n| 401 | `invalid_api_key` | Key malformed, revoked, or wrong | Regenerate at [openrouter.ai\u002Fkeys](https:\u002F\u002Fopenrouter.ai\u002Fkeys); key must start with `sk-or-v1-` |\n| 401 | `missing_api_key` | No `Authorization` header | Add `Authorization: Bearer sk-or-v1-...` header |\n| 402 | `insufficient_credits` | Credit balance is zero | Top up at [openrouter.ai\u002Fcredits](https:\u002F\u002Fopenrouter.ai\u002Fcredits) |\n| 402 | `credit_limit_reached` | Per-key credit limit hit | Increase key limit in dashboard or create new key |\n| 403 | `key_disabled` | Key was disabled by admin | Re-enable in dashboard or create new key |\n| 408 | `request_timeout` | Model took too long | Reduce max_tokens; use streaming; try faster model |\n| 429 | `rate_limit_exceeded` | Too many requests per interval | SDK auto-retries; increase `max_retries`; use multiple keys |\n| 502 | `provider_error` | Upstream provider returned error | Retry with backoff; try different provider via `provider.order` |\n| 503 | `model_unavailable` | Model temporarily offline | Use fallback models; check [status.openrouter.ai](https:\u002F\u002Fstatus.openrouter.ai) |\n\n## Error Response Format\n\n```json\n{\n  \"error\": {\n    \"code\": 401,\n    \"message\": \"Invalid API key. Please check your API key and try again.\",\n    \"metadata\": {\n      \"provider_name\": \"Anthropic\",\n      \"raw\": \"...\"\n    }\n  }\n}\n```\n\n## Diagnostic Script\n\n```bash\n#!\u002Fbin\u002Fbash\necho \"=== OpenRouter Error Diagnostics ===\"\n\n# 1. Test authentication\necho -n \"1. Auth: \"\nAUTH=$(curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\" \\\n  https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fauth\u002Fkey \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\")\n[ \"$AUTH\" = \"200\" ] && echo \"OK\" || echo \"FAIL (HTTP $AUTH)\"\n\n# 2. Check credit balance\necho -n \"2. Credits: \"\nCREDITS=$(curl -s https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fauth\u002Fkey \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\" | \\\n  jq -r '(.data.limit \u002F\u002F 0) - .data.usage')\necho \"\\$$CREDITS remaining\"\n\n# 3. Test model availability\necho -n \"3. Model: \"\nMODEL=\"openai\u002Fgpt-4o-mini\"\nEXISTS=$(curl -s https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels | \\\n  jq --arg m \"$MODEL\" '[.data[] | select(.id == $m)] | length')\n[ \"$EXISTS\" -gt 0 ] && echo \"$MODEL available\" || echo \"$MODEL NOT FOUND\"\n\n# 4. Test a minimal request\necho -n \"4. Request: \"\nRESP=$(curl -s -w \"\\n%{http_code}\" \\\n  https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"openai\u002Fgpt-4o-mini\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":1}')\nHTTP=$(echo \"$RESP\" | tail -1)\n[ \"$HTTP\" = \"200\" ] && echo \"OK\" || echo \"FAIL (HTTP $HTTP)\"\n```\n\n## Python Error Handler\n\n```python\nimport os\nfrom openai import OpenAI, APIError, AuthenticationError, RateLimitError, BadRequestError, APITimeoutError\n\nclient = OpenAI(\n    base_url=\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\",\n    api_key=os.environ[\"OPENROUTER_API_KEY\"],\n    max_retries=3,  # Auto-retry 429 and 5xx\n    timeout=30.0,\n    default_headers={\"HTTP-Referer\": \"https:\u002F\u002Fmy-app.com\", \"X-Title\": \"my-app\"},\n)\n\ndef safe_completion(messages, model=\"openai\u002Fgpt-4o-mini\", **kwargs):\n    \"\"\"Completion with categorized error handling.\"\"\"\n    try:\n        return client.chat.completions.create(\n            model=model, messages=messages, **kwargs\n        )\n    except AuthenticationError as e:\n        # 401: Bad or missing API key\n        raise SystemExit(f\"AUTH ERROR: Check OPENROUTER_API_KEY. {e}\")\n    except BadRequestError as e:\n        # 400: Bad model ID, invalid params, context too long\n        if \"context_length\" in str(e):\n            raise ValueError(f\"Prompt too long for {model}. Trim or use larger-context model.\")\n        raise ValueError(f\"Bad request: {e}\")\n    except RateLimitError:\n        # 429: SDK already retried max_retries times\n        raise RuntimeError(\"Rate limited after all retries. Wait or use more API keys.\")\n    except APITimeoutError:\n        # Timeout: model too slow\n        raise TimeoutError(f\"Model {model} timed out. Try streaming or a faster model.\")\n    except APIError as e:\n        # 402, 5xx, other\n        if e.status_code == 402:\n            raise RuntimeError(\"Insufficient credits. Top up at openrouter.ai\u002Fcredits\")\n        raise RuntimeError(f\"API error {e.status_code}: {e}\")\n```\n\n## Prevention Middleware\n\n```python\nimport requests\n\ndef validate_before_send(model: str, messages: list, max_tokens: int = 1024):\n    \"\"\"Pre-flight validation to catch common mistakes before API call.\"\"\"\n    errors = []\n\n    # Check model exists\n    models = requests.get(\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels\").json()[\"data\"]\n    model_ids = {m[\"id\"] for m in models}\n    if model not in model_ids:\n        # Try to suggest correct ID\n        prefix = model.split(\"\u002F\")[0] if \"\u002F\" in model else \"\"\n        suggestions = [m for m in model_ids if prefix and m.startswith(prefix)][:3]\n        errors.append(f\"Model '{model}' not found. Did you mean: {suggestions}\")\n\n    # Check messages format\n    if not messages or not isinstance(messages, list):\n        errors.append(\"messages must be a non-empty list\")\n    for msg in messages:\n        if \"role\" not in msg or \"content\" not in msg:\n            errors.append(f\"Each message needs 'role' and 'content': {msg}\")\n\n    # Estimate context usage\n    total_chars = sum(len(str(m.get(\"content\", \"\"))) for m in messages)\n    est_tokens = total_chars \u002F\u002F 4\n    model_info = next((m for m in models if m[\"id\"] == model), None)\n    if model_info:\n        ctx_limit = model_info[\"context_length\"]\n        if est_tokens + max_tokens > ctx_limit:\n            errors.append(f\"Estimated {est_tokens} + {max_tokens} max_tokens > {ctx_limit} context limit\")\n\n    if errors:\n        raise ValueError(\"Pre-flight validation failed:\\n\" + \"\\n\".join(f\"  - {e}\" for e in errors))\n```\n\n## Error Handling\n\n| Scenario | SDK Behavior | Your Action |\n|----------|-------------|-------------|\n| 429 rate limit | Auto-retries with backoff | Increase `max_retries` or add keys |\n| 5xx server error | Auto-retries with backoff | Increase `max_retries`; add fallback models |\n| 401 auth error | Fails immediately (no retry) | Fix API key and retry |\n| 400 bad request | Fails immediately (no retry) | Fix request parameters |\n| 402 no credits | Fails immediately (no retry) | Top up credits |\n\n## Enterprise Considerations\n\n- The OpenAI SDK handles 429 and 5xx retries automatically -- configure `max_retries` (default 2, recommend 3-5)\n- Implement pre-flight validation to catch 400 errors before making API calls (saves money and time)\n- Log error codes and rates to detect systematic issues (e.g., provider outages show as 502 spike)\n- Build a status dashboard that checks both your error rates and [status.openrouter.ai](https:\u002F\u002Fstatus.openrouter.ai)\n- For 402 errors, implement credit balance monitoring with alerts at 20% remaining\n\n## References\n\n- [Examples](${CLAUDE_SKILL_DIR}\u002Freferences\u002Fexamples.md) | [Errors](${CLAUDE_SKILL_DIR}\u002Freferences\u002Ferrors.md)\n- [Error Codes](https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fapi\u002Ferrors) | [Status](https:\u002F\u002Fstatus.openrouter.ai)\n","# OpenRouter Common Errors\n\n## Overview\n\nOpenRouter returns standard HTTP error codes plus OpenRouter-specific error codes in the response body. The most common: 401 (auth), 402 (credits), 429 (rate limit), 400 (bad request), and 5xx (upstream provider errors). Each error includes a `code` field and a human-readable `message`. This skill covers every common error, its root cause, and the exact fix.\n\n## Complete Error Reference\n\n| HTTP | Error Code | Cause | Fix |\n|------|-----------|-------|-----|\n| 400 | `bad_request` | Malformed request body | Validate `messages` array format; ensure model ID includes provider prefix |\n| 400 | `invalid_model` | Model ID not found | Check model exists: `curl -s https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels \\| jq '.data[].id'` |\n| 400 | `context_length_exceeded` | Prompt + max_tokens > model limit | Reduce prompt size or use a larger-context model |\n| 400 | `invalid_tool_schema` | Tool definition has unsupported types | Use basic JSON Schema types only (string, number, boolean, object, array) |\n| 401 | `invalid_api_key` | Key malformed, revoked, or wrong | Regenerate at [openrouter.ai\u002Fkeys](https:\u002F\u002Fopenrouter.ai\u002Fkeys); key must start with `sk-or-v1-` |\n| 401 | `missing_api_key` | No `Authorization` header | Add `Authorization: Bearer sk-or-v1-...` header |\n| 402 | `insufficient_credits` | Credit balance is zero | Top up at [openrouter.ai\u002Fcredits](https:\u002F\u002Fopenrouter.ai\u002Fcredits) |\n| 402 | `credit_limit_reached` | Per-key credit limit hit | Increase key limit in dashboard or create new key |\n| 403 | `key_disabled` | Key was disabled by admin | Re-enable in dashboard or create new key |\n| 408 | `request_timeout` | Model took too long | Reduce max_tokens; use streaming; try faster model |\n| 429 | `rate_limit_exceeded` | Too many requests per interval | SDK auto-retries; increase `max_retries`; use multiple keys |\n| 502 | `provider_error` | Upstream provider returned error | Retry with backoff; try different provider via `provider.order` |\n| 503 | `model_unavailable` | Model temporarily offline | Use fallback models; check [status.openrouter.ai](https:\u002F\u002Fstatus.openrouter.ai) |\n\n## Error Response Format\n\n```json\n{\n  \"error\": {\n    \"code\": 401,\n    \"message\": \"Invalid API key. Please check your API key and try again.\",\n    \"metadata\": {\n      \"provider_name\": \"Anthropic\",\n      \"raw\": \"...\"\n    }\n  }\n}\n```\n\n## Diagnostic Script\n\n```bash\n#!\u002Fbin\u002Fbash\necho \"=== OpenRouter Error Diagnostics ===\"\n\n# 1. Test authentication\necho -n \"1. Auth: \"\nAUTH=$(curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\" \\\n  https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fauth\u002Fkey \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\")\n[ \"$AUTH\" = \"200\" ] && echo \"OK\" || echo \"FAIL (HTTP $AUTH)\"\n\n# 2. Check credit balance\necho -n \"2. Credits: \"\nCREDITS=$(curl -s https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fauth\u002Fkey \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\" | \\\n  jq -r '(.data.limit \u002F\u002F 0) - .data.usage')\necho \"\\$$CREDITS remaining\"\n\n# 3. Test model availability\necho -n \"3. Model: \"\nMODEL=\"openai\u002Fgpt-4o-mini\"\nEXISTS=$(curl -s https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels | \\\n  jq --arg m \"$MODEL\" '[.data[] | select(.id == $m)] | length')\n[ \"$EXISTS\" -gt 0 ] && echo \"$MODEL available\" || echo \"$MODEL NOT FOUND\"\n\n# 4. Test a minimal request\necho -n \"4. Request: \"\nRESP=$(curl -s -w \"\\n%{http_code}\" \\\n  https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Authorization: Bearer $OPENROUTER_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\":\"openai\u002Fgpt-4o-mini\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}],\"max_tokens\":1}')\nHTTP=$(echo \"$RESP\" | tail -1)\n[ \"$HTTP\" = \"200\" ] && echo \"OK\" || echo \"FAIL (HTTP $HTTP)\"\n```\n\n## Python Error Handler\n\n```python\nimport os\nfrom openai import OpenAI, APIError, AuthenticationError, RateLimitError, BadRequestError, APITimeoutError\n\nclient = OpenAI(\n    base_url=\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\",\n    api_key=os.environ[\"OPENROUTER_API_KEY\"],\n    max_retries=3,  # Auto-retry 429 and 5xx\n    timeout=30.0,\n    default_headers={\"HTTP-Referer\": \"https:\u002F\u002Fmy-app.com\", \"X-Title\": \"my-app\"},\n)\n\ndef safe_completion(messages, model=\"openai\u002Fgpt-4o-mini\", **kwargs):\n    \"\"\"Completion with categorized error handling.\"\"\"\n    try:\n        return client.chat.completions.create(\n            model=model, messages=messages, **kwargs\n        )\n    except AuthenticationError as e:\n        # 401: Bad or missing API key\n        raise SystemExit(f\"AUTH ERROR: Check OPENROUTER_API_KEY. {e}\")\n    except BadRequestError as e:\n        # 400: Bad model ID, invalid params, context too long\n        if \"context_length\" in str(e):\n            raise ValueError(f\"Prompt too long for {model}. Trim or use larger-context model.\")\n        raise ValueError(f\"Bad request: {e}\")\n    except RateLimitError:\n        # 429: SDK already retried max_retries times\n        raise RuntimeError(\"Rate limited after all retries. Wait or use more API keys.\")\n    except APITimeoutError:\n        # Timeout: model too slow\n        raise TimeoutError(f\"Model {model} timed out. Try streaming or a faster model.\")\n    except APIError as e:\n        # 402, 5xx, other\n        if e.status_code == 402:\n            raise RuntimeError(\"Insufficient credits. Top up at openrouter.ai\u002Fcredits\")\n        raise RuntimeError(f\"API error {e.status_code}: {e}\")\n```\n\n## Prevention Middleware\n\n```python\nimport requests\n\ndef validate_before_send(model: str, messages: list, max_tokens: int = 1024):\n    \"\"\"Pre-flight validation to catch common mistakes before API call.\"\"\"\n    errors = []\n\n    # Check model exists\n    models = requests.get(\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\u002Fmodels\").json()[\"data\"]\n    model_ids = {m[\"id\"] for m in models}\n    if model not in model_ids:\n        # Try to suggest correct ID\n        prefix = model.split(\"\u002F\")[0] if \"\u002F\" in model else \"\"\n        suggestions = [m for m in model_ids if prefix and m.startswith(prefix)][:3]\n        errors.append(f\"Model '{model}' not found. Did you mean: {suggestions}\")\n\n    # Check messages format\n    if not messages or not isinstance(messages, list):\n        errors.append(\"messages must be a non-empty list\")\n    for msg in messages:\n        if \"role\" not in msg or \"content\" not in msg:\n            errors.append(f\"Each message needs 'role' and 'content': {msg}\")\n\n    # Estimate context usage\n    total_chars = sum(len(str(m.get(\"content\", \"\"))) for m in messages)\n    est_tokens = total_chars \u002F\u002F 4\n    model_info = next((m for m in models if m[\"id\"] == model), None)\n    if model_info:\n        ctx_limit = model_info[\"context_length\"]\n        if est_tokens + max_tokens > ctx_limit:\n            errors.append(f\"Estimated {est_tokens} + {max_tokens} max_tokens > {ctx_limit} context limit\")\n\n    if errors:\n        raise ValueError(\"Pre-flight validation failed:\\n\" + \"\\n\".join(f\"  - {e}\" for e in errors))\n```\n\n## Error Handling\n\n| Scenario | SDK Behavior | Your Action |\n|----------|-------------|-------------|\n| 429 rate limit | Auto-retries with backoff | Increase `max_retries` or add keys |\n| 5xx server error | Auto-retries with backoff | Increase `max_retries`; add fallback models |\n| 401 auth error | Fails immediately (no retry) | Fix API key and retry |\n| 400 bad request | Fails immediately (no retry) | Fix request parameters |\n| 402 no credits | Fails immediately (no retry) | Top up credits |\n\n## Enterprise Considerations\n\n- The OpenAI SDK handles 429 and 5xx retries automatically -- configure `max_retries` (default 2, recommend 3-5)\n- Implement pre-flight validation to catch 400 errors before making API calls (saves money and time)\n- Log error codes and rates to detect systematic issues (e.g., provider outages show as 502 spike)\n- Build a status dashboard that checks both your error rates and [status.openrouter.ai](https:\u002F\u002Fstatus.openrouter.ai)\n- For 402 errors, implement credit balance monitoring with alerts at 20% remaining\n\n## References\n\n- [Examples](${CLAUDE_SKILL_DIR}\u002Freferences\u002Fexamples.md) | [Errors](${CLAUDE_SKILL_DIR}\u002Freferences\u002Ferrors.md)\n- [Error Codes](https:\u002F\u002Fopenrouter.ai\u002Fdocs\u002Fapi\u002Ferrors) | [Status](https:\u002F\u002Fstatus.openrouter.ai)\n",{"name":5,"tags":24,"author":30,"license":15,"version":31,"description":32,"allowed-tools":33,"compatible-with":34},[25,26,27,28,29],"saas","openrouter","errors","debugging","troubleshooting","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","2.0.0","Diagnose and fix common OpenRouter API errors. Use when encountering error codes, unexpected failures, or debugging API responses. Triggers: 'openrouter error', 'openrouter 401', 'openrouter 429', 'openrouter 402', 'fix openrouter'.\n","Read, Write, Edit, Bash, Grep","claude-code, codex, openclaw","main","99825ad3f3bcc6597ddcc7294a14e6e922f2b67b","skills\u002Fsaas-packs--openrouter-pack--openrouter-common-errors",0,"https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills","https:\u002F\u002Fgithub.com\u002Fjukeyman","https:\u002F\u002FRJBUSINESSSOLUTIONS.ORG","Credit and Finance Expert | Developer\r\n\r\nI'm Rick Jefferson, a seasoned credit and finance expert with over a decade of experience in financial literacy,","2026-07-13 07:03:29",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add jukeyman\u002Fjukeyman-skills --skill openrouter-common-errors",{"tool":50,"command":51},"bunx","bunx skills add jukeyman\u002Fjukeyman-skills --skill openrouter-common-errors",{"tool":53,"command":54},"pnpm","pnpm dlx skills add jukeyman\u002Fjukeyman-skills --skill openrouter-common-errors","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fsaas-packs--openrouter-pack--openrouter-common-errors\u002FSKILL.md",true,[],[59,66,73,80,87,95],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M79ANS2SM329NEP5ZCX106RR","zustand-store-creator","Create zustand store creator operations. Auto-activating skill for Frontend Development.\nTriggers on: zustand store creator, zustand store creator\nPart of the Frontend Development skill category. Use when working with zustand store creator functionality. Trigger with phrases like \"zustand store creator\", \"zustand creator\", \"zustand\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzustand-store-creator\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M79AMZKP4YDEZ7EHG1Y7PP74","zero-trust-config-helper","Configure with zero trust config helper operations. Auto-activating skill for Security Advanced.\nTriggers on: zero trust config helper, zero trust config helper\nPart of the Security Advanced skill category. Use when configuring systems or services. Trigger with phrases like \"zero trust config helper\", \"zero helper\", \"zero\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzero-trust-config-helper\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M79AMJSBCEJQNBTYNAHYN5HM","zapier-integration-helper","Assist with zapier integration helper operations. Auto-activating skill for Business Automation.\nTriggers on: zapier integration helper, zapier integration helper\nPart of the Business Automation skill category. Use when working with APIs or building integrations. Trigger with phrases like \"zapier integration helper\", \"zapier helper\", \"zapier\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzapier-integration-helper\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M79AHJZGVMARS13VFQYRR1MP","yaml-config-validator","Validate yaml config validator operations. Auto-activating skill for DevOps Basics.\nTriggers on: yaml config validator, yaml config validator\nPart of the DevOps Basics skill category. Use when configuring systems or services. Trigger with phrases like \"yaml config validator\", \"yaml validator\", \"yaml\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fyaml-config-validator\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":91,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M79AHGDZRN0020RDQSQDPAM8","xvary-stock-research","Thesis-driven equity analysis from public SEC EDGAR and market data; \u002Fanalyze, \u002Fscore, \u002Fcompare workflows with bundled Python tools (Claude Code, Cursor, Codex).","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fxvary-stock-research\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fxvary-stock-research\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":19},"01M79AHCYJ9FV9RMHQ24HDRN33","xss-vulnerability-scanner","Scan xss vulnerability scanner operations. Auto-activating skill for Security Fundamentals.\nTriggers on: xss vulnerability scanner, xss vulnerability scanner\nPart of the Security Fundamentals skill category. Use when working with xss vulnerability scanner functionality. Trigger with phrases like \"xss vulnerability scanner\", \"xss scanner\", \"xss\".","https:\u002F\u002Fgithub.com\u002Fjukeyman\u002Fjukeyman-skills\u002Fblob\u002Fmain\u002Fskills\u002Fxss-vulnerability-scanner\u002FSKILL.md",[],[]]